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}
|
||||
(:require [next.jdbc :as njdbc]
|
||||
[next.jdbc.sql :as sql]
|
||||
[sci.impl.namespaces :refer [copy-var]]
|
||||
[sci.impl.namespaces :refer [copy-var macrofy]]
|
||||
[sci.impl.vars :as vars]))
|
||||
|
||||
(def next-ns (vars/->SciNamespace 'next.jdbc nil))
|
||||
|
|
@ -28,8 +28,7 @@
|
|||
'plan (copy-var njdbc/plan next-ns)
|
||||
'prepare (copy-var njdbc/prepare next-ns)
|
||||
'transact (copy-var njdbc/transact next-ns)
|
||||
'with-transaction (with-meta with-transaction
|
||||
{:sci/macro true})})
|
||||
'with-transaction (macrofy 'with-transaction with-transaction next-ns)})
|
||||
|
||||
(def sns (vars/->SciNamespace 'next.jdbc.sql nil))
|
||||
|
||||
|
|
|
|||
|
|
@ -174,4 +174,4 @@
|
|||
(println (str "'" k) (format "(sci/copy-var tc/%s p-ns)" k)))
|
||||
|
||||
(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