test that var metadata matches containing ns (#967)
* - change namespace on 'quick-check' to match clojure version - add test for var meta->namespace alignment * - add ns to with-transaction macro
This commit is contained in:
parent
116d73f0b0
commit
bb57d220d0
3 changed files with 28 additions and 4 deletions
|
|
@ -2,7 +2,7 @@
|
||||||
{:no-doc true}
|
{:no-doc true}
|
||||||
(:require [next.jdbc :as njdbc]
|
(:require [next.jdbc :as njdbc]
|
||||||
[next.jdbc.sql :as sql]
|
[next.jdbc.sql :as sql]
|
||||||
[sci.impl.namespaces :refer [copy-var]]
|
[sci.impl.namespaces :refer [copy-var macrofy]]
|
||||||
[sci.impl.vars :as vars]))
|
[sci.impl.vars :as vars]))
|
||||||
|
|
||||||
(def next-ns (vars/->SciNamespace 'next.jdbc nil))
|
(def next-ns (vars/->SciNamespace 'next.jdbc nil))
|
||||||
|
|
@ -28,8 +28,7 @@
|
||||||
'plan (copy-var njdbc/plan next-ns)
|
'plan (copy-var njdbc/plan next-ns)
|
||||||
'prepare (copy-var njdbc/prepare next-ns)
|
'prepare (copy-var njdbc/prepare next-ns)
|
||||||
'transact (copy-var njdbc/transact next-ns)
|
'transact (copy-var njdbc/transact next-ns)
|
||||||
'with-transaction (with-meta with-transaction
|
'with-transaction (macrofy 'with-transaction with-transaction next-ns)})
|
||||||
{:sci/macro true})})
|
|
||||||
|
|
||||||
(def sns (vars/->SciNamespace 'next.jdbc.sql nil))
|
(def sns (vars/->SciNamespace 'next.jdbc.sql nil))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -174,4 +174,4 @@
|
||||||
(println (str "'" k) (format "(sci/copy-var tc/%s p-ns)" k)))
|
(println (str "'" k) (format "(sci/copy-var tc/%s p-ns)" k)))
|
||||||
|
|
||||||
(def test-check-namespace
|
(def test-check-namespace
|
||||||
{'quick-check (sci/copy-var tc/quick-check p-ns)})
|
{'quick-check (sci/copy-var tc/quick-check tc-ns)})
|
||||||
|
|
|
||||||
25
test/babashka/namespace_test.clj
Normal file
25
test/babashka/namespace_test.clj
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
(ns babashka.namespace-test
|
||||||
|
(:require [babashka.test-utils :as tu]
|
||||||
|
[clojure.edn :as edn]
|
||||||
|
[clojure.test :refer :all]))
|
||||||
|
|
||||||
|
(defn bb [input & args]
|
||||||
|
(edn/read-string
|
||||||
|
{:readers *data-readers*
|
||||||
|
:eof nil}
|
||||||
|
(apply tu/bb (when (some? input) (str input)) (map str args))))
|
||||||
|
|
||||||
|
(deftest publics-namespace-test
|
||||||
|
(testing "all namespace publics (except for those in clojure.lang and user namespaces)
|
||||||
|
have ns metadata that matches the namespace it's in"
|
||||||
|
(comment "results seq contains vars whose ns meta doesn't match the ns they're in")
|
||||||
|
(is (empty? (bb nil "
|
||||||
|
(let [excluded-namespaces #{'clojure.lang 'user}]
|
||||||
|
(for [nspace (remove #(excluded-namespaces (ns-name %)) (all-ns))
|
||||||
|
[var-symbol ns-var] (ns-publics nspace)
|
||||||
|
:let [ns-ns-name (ns-name nspace)
|
||||||
|
var-ns-name (some-> ns-var meta :ns ns-name)]
|
||||||
|
:when (not= ns-ns-name var-ns-name)]
|
||||||
|
{:containing-ns ns-ns-name
|
||||||
|
:ns-on-var var-ns-name
|
||||||
|
:var-name var-symbol}))")))))
|
||||||
Loading…
Reference in a new issue