[#20] Ensure ns-map exists for code-only namespaces
This commit is contained in:
parent
7c39de6275
commit
c1530bd07e
6 changed files with 22 additions and 7 deletions
3
deps.edn
3
deps.edn
|
|
@ -3,7 +3,8 @@
|
||||||
:aliases
|
:aliases
|
||||||
{:sci
|
{:sci
|
||||||
{:extra-deps
|
{:extra-deps
|
||||||
{borkdude/sci {:mvn/version "0.0.13-alpha.27"}}}
|
{borkdude/sci {:git/url "https://github.com/borkdude/sci"
|
||||||
|
:sha "a7f8d05f08ab150621c2403dacdd57c47ea09ff4"}}}
|
||||||
:test
|
:test
|
||||||
{:extra-deps
|
{:extra-deps
|
||||||
{test-runner
|
{test-runner
|
||||||
|
|
|
||||||
|
|
@ -119,9 +119,11 @@
|
||||||
read-fn)
|
read-fn)
|
||||||
{})])
|
{})])
|
||||||
namespace (when-let [v (get reply "vars")]
|
namespace (when-let [v (get reply "vars")]
|
||||||
(let [name (-> (get reply "name")
|
(let [name-str (-> (get reply "name")
|
||||||
bytes->string)]
|
bytes->string)
|
||||||
{:name name :vars (bencode->vars pod name v)}))
|
name (symbol name-str)]
|
||||||
|
{:name name
|
||||||
|
:vars (bencode->vars pod name-str v)}))
|
||||||
chan (get @chans id)
|
chan (get @chans id)
|
||||||
promise? (instance? clojure.lang.IPending chan)
|
promise? (instance? clojure.lang.IPending chan)
|
||||||
exception (when (and promise? error?)
|
exception (when (and promise? error?)
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,10 @@
|
||||||
ns-name name
|
ns-name name
|
||||||
sci-ns (sci/create-ns (symbol ns-name))]
|
sci-ns (sci/create-ns (symbol ns-name))]
|
||||||
(sci/binding [sci/ns sci-ns]
|
(sci/binding [sci/ns sci-ns]
|
||||||
|
;; ensure ns map in ctx, see #20
|
||||||
|
(swap! env update-in [:namespaces ns-name]
|
||||||
|
(fn [ns-map]
|
||||||
|
(if ns-map ns-map {:obj sci-ns})))
|
||||||
(doseq [[var-name var-value] vars]
|
(doseq [[var-name var-value] vars]
|
||||||
(cond (ifn? var-value)
|
(cond (ifn? var-value)
|
||||||
(swap! env assoc-in [:namespaces ns-name var-name]
|
(swap! env assoc-in [:namespaces ns-name var-name]
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,10 @@
|
||||||
{"name" "pod.test-pod.loaded"
|
{"name" "pod.test-pod.loaded"
|
||||||
"defer" "true"}
|
"defer" "true"}
|
||||||
{"name" "pod.test-pod.loaded2"
|
{"name" "pod.test-pod.loaded2"
|
||||||
"defer" "true"}]
|
"defer" "true"}
|
||||||
|
{"name" "pod.test-pod.only-code"
|
||||||
|
"vars" [{"name" "foo"
|
||||||
|
"code" "(defn foo [] 1)"}]}]
|
||||||
"ops" {"shutdown" {}}})
|
"ops" {"shutdown" {}}})
|
||||||
(recur))
|
(recur))
|
||||||
:invoke (let [var (-> (get message "var")
|
:invoke (let [var (-> (get message "var")
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,9 @@
|
||||||
|
|
||||||
(def fn-called (pod.test-pod/fn-call inc 2))
|
(def fn-called (pod.test-pod/fn-call inc 2))
|
||||||
|
|
||||||
|
(require '[pod.test-pod.only-code :as only-code])
|
||||||
|
(def should-be-1 (only-code/foo))
|
||||||
|
|
||||||
(require '[pod.test-pod.loaded2 :as loaded2])
|
(require '[pod.test-pod.loaded2 :as loaded2])
|
||||||
(def loaded (loaded2/loaded 1))
|
(def loaded (loaded2/loaded 1))
|
||||||
|
|
||||||
|
|
@ -70,4 +73,5 @@
|
||||||
tagged
|
tagged
|
||||||
other-tagged
|
other-tagged
|
||||||
loaded
|
loaded
|
||||||
fn-called]
|
fn-called
|
||||||
|
should-be-1]
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,8 @@
|
||||||
[1 2 3]
|
[1 2 3]
|
||||||
[[1] [1]]
|
[[1] [1]]
|
||||||
2
|
2
|
||||||
3]
|
3
|
||||||
|
1]
|
||||||
(concat ret (repeat ::nil)))]
|
(concat ret (repeat ::nil)))]
|
||||||
(if (instance? java.util.regex.Pattern expected)
|
(if (instance? java.util.regex.Pattern expected)
|
||||||
(is (re-find expected actual))
|
(is (re-find expected actual))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue