[#20] Ensure ns-map exists for code-only namespaces

This commit is contained in:
Michiel Borkent 2020-09-30 12:24:04 +02:00
parent 7c39de6275
commit c1530bd07e
6 changed files with 22 additions and 7 deletions

View file

@ -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

View file

@ -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?)

View file

@ -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]

View file

@ -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")

View file

@ -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]

View file

@ -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))