diff --git a/test/integration/nrepl-test.janet b/test/integration/nrepl-test.janet index 47ce919..2b18f3e 100644 --- a/test/integration/nrepl-test.janet +++ b/test/integration/nrepl-test.janet @@ -49,8 +49,11 @@ # eval returns a value (check "eval (+ 1 2)" "(some #(get % \"value\") (jolt.nrepl/client-eval c \"(+ 1 2)\" s))" "3") +# a def's value renders as #'ns/name (pr-str loops on a var's cyclic ns refs) +(check "def renders as #'ns/name" + "(some #(get % \"value\") (jolt.nrepl/client-eval c \"(def yy 21)\" s))" "#'user/yy") + # defs persist across evals in the session -(ev "(jolt.nrepl/client-eval c \"(def yy 21)\" s)") (check "def then use" "(some #(get % \"value\") (jolt.nrepl/client-eval c \"(* yy 2)\" s))" "42") # stdout is captured and streamed as an out message diff --git a/test/spec/host-interop-spec.janet b/test/spec/host-interop-spec.janet index e1ea7aa..7de9922 100644 --- a/test/spec/host-interop-spec.janet +++ b/test/spec/host-interop-spec.janet @@ -9,6 +9,22 @@ ["field access .-" "41" "(.-value {:value 41})"] ["dot field keyword" "41" "(. {:value 41} :value)"]) +# The `janet` namespace segment is the explicit Janet-stdlib bridge added for +# the networking layer (and used by jolt.nrepl). `janet/` resolves a Janet +# root binding; `janet./` resolves a module binding. The boundary +# is explicit so it's visible where host semantics take over. +(defspec "interop / janet bridge" + ["root builtin janet/" "\"123\"" "(janet/string 1 2 3)"] + ["root builtin janet/type" ":string" "(janet/type \"x\")"] + ["module fn janet./" "4" "(janet.math/sqrt 16)"] + ["janet.string module fn" "\"HI\"" "(janet.string/ascii-upper \"hi\")"] + ["janet.os/clock is a number" "true" "(number? (janet.os/clock))"] + # crossing the boundary uses Janet representations: a Jolt vector is a table + ["jolt vector crosses as a janet table" ":table" "(janet/type [1 2])"] + # interop is explicit-only: an unprefixed Janet module is not auto-exposed + ["unprefixed janet module not exposed" :throws "net/server"] + ["unknown janet symbol throws" :throws "(janet.os/definitely-not-a-real-fn)"]) + (defspec "interop / jolt.interop" ["janet-type quoted list" ":array" "(do (require (quote [jolt.interop :as j])) (j/janet-type (quote (1 2))))"] ["janet-type list" ":array" "(do (require (quote [jolt.interop :as j])) (j/janet-type (list 1 2)))"]