Co-authored-by: axks <alexander.kaiser@blockinfinity.com>
This commit is contained in:
parent
5965e32d26
commit
3aca505790
3 changed files with 47 additions and 40 deletions
|
|
@ -13,7 +13,8 @@
|
||||||
(let [dev? (= "true" (System/getenv "BABASHKA_DEV"))
|
(let [dev? (= "true" (System/getenv "BABASHKA_DEV"))
|
||||||
opts (merge {:debug dev?
|
opts (merge {:debug dev?
|
||||||
:describe {"versions" {"babashka" common/version}}
|
:describe {"versions" {"babashka" common/version}}
|
||||||
:thread-bind [babashka.impl.clojure.core/warn-on-reflection]}
|
:thread-bind [babashka.impl.clojure.core/warn-on-reflection
|
||||||
|
babashka.impl.clojure.core/unchecked-math]}
|
||||||
opts)]
|
opts)]
|
||||||
(server/start-server! (common/ctx) opts))))
|
(server/start-server! (common/ctx) opts))))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -357,6 +357,7 @@ Use bb run --help to show this help output.
|
||||||
sci-types/Eval
|
sci-types/Eval
|
||||||
(eval [_ _ctx _bindings]
|
(eval [_ _ctx _bindings]
|
||||||
(force @input-var)))}
|
(force @input-var)))}
|
||||||
|
'clojure.core core-extras
|
||||||
'clojure.tools.cli tools-cli-namespace
|
'clojure.tools.cli tools-cli-namespace
|
||||||
'clojure.java.shell shell-namespace
|
'clojure.java.shell shell-namespace
|
||||||
'babashka.core bbcore/core-namespace
|
'babashka.core bbcore/core-namespace
|
||||||
|
|
@ -875,10 +876,7 @@ Use bb run --help to show this help output.
|
||||||
main)
|
main)
|
||||||
;; TODO: pull more of these values to compile time
|
;; TODO: pull more of these values to compile time
|
||||||
opts {:aliases aliases
|
opts {:aliases aliases
|
||||||
:namespaces (-> namespaces
|
:namespaces (assoc-in namespaces ['clojure.core 'load-file] (sci-copy-vars/new-var 'load-file load-file*))
|
||||||
(assoc 'clojure.core
|
|
||||||
(assoc core-extras
|
|
||||||
'load-file (sci-copy-vars/new-var 'load-file load-file*))))
|
|
||||||
:env env
|
:env env
|
||||||
:features #{:bb :clj}
|
:features #{:bb :clj}
|
||||||
:classes @classes/class-map
|
:classes @classes/class-map
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,16 @@
|
||||||
(ns babashka.impl.nrepl-server-test
|
(ns babashka.impl.nrepl-server-test
|
||||||
(:require
|
(:require
|
||||||
|
[babashka.impl.nrepl-server :refer [start-server!]]
|
||||||
|
[babashka.nrepl.server :refer [parse-opt stop-server!]]
|
||||||
[babashka.main :as main]
|
[babashka.main :as main]
|
||||||
[babashka.nrepl.server :refer [start-server! stop-server! parse-opt]]
|
|
||||||
[babashka.test-utils :as tu]
|
[babashka.test-utils :as tu]
|
||||||
[babashka.wait :as wait]
|
[babashka.wait :as wait]
|
||||||
[bencode.core :as bencode]
|
[bencode.core :as bencode]
|
||||||
[clojure.test :as t :refer [deftest is testing]]
|
[clojure.test :as t :refer [deftest is testing]]
|
||||||
[sci.impl.opts :refer [init]])
|
[sci.core :as sci]
|
||||||
(:import [java.lang ProcessBuilder$Redirect]))
|
[sci.ctx-store :as ctx-store])
|
||||||
|
(:import
|
||||||
|
[java.lang ProcessBuilder$Redirect]))
|
||||||
|
|
||||||
(def debug? false)
|
(def debug? false)
|
||||||
|
|
||||||
|
|
@ -87,13 +90,13 @@
|
||||||
(is (= ":foo0" (:value (read-reply in session @id)))))
|
(is (= ":foo0" (:value (read-reply in session @id)))))
|
||||||
;; TODO: I don't remember why we created a new ns
|
;; TODO: I don't remember why we created a new ns
|
||||||
#_(testing "providing an ns value of a non-existing namespace creates the namespace"
|
#_(testing "providing an ns value of a non-existing namespace creates the namespace"
|
||||||
(bencode/write-bencode os {"op" "eval"
|
(bencode/write-bencode os {"op" "eval"
|
||||||
"code" "(ns-name *ns*)"
|
"code" "(ns-name *ns*)"
|
||||||
"session" session
|
"session" session
|
||||||
"id" (new-id!)
|
"id" (new-id!)
|
||||||
"ns" "unicorn"})
|
"ns" "unicorn"})
|
||||||
(let [reply (read-reply in session @id)]
|
(let [reply (read-reply in session @id)]
|
||||||
(is (= "unicorn" (:value reply))))))
|
(is (= "unicorn" (:value reply))))))
|
||||||
(testing "multiple top level expressions results in two value replies"
|
(testing "multiple top level expressions results in two value replies"
|
||||||
(bencode/write-bencode os {"op" "eval"
|
(bencode/write-bencode os {"op" "eval"
|
||||||
"code" "(+ 1 2 3) (+ 1 2 3)"
|
"code" "(+ 1 2 3) (+ 1 2 3)"
|
||||||
|
|
@ -181,35 +184,40 @@
|
||||||
"session" session "id" (new-id!)})
|
"session" session "id" (new-id!)})
|
||||||
(dotimes [_ 3]
|
(dotimes [_ 3]
|
||||||
(let [reply (read-reply in session @id)]
|
(let [reply (read-reply in session @id)]
|
||||||
(is (= "Hello\n" (tu/normalize (:out reply))))))))))
|
(is (= "Hello\n" (tu/normalize (:out reply)))))))
|
||||||
|
(testing "dynamic var can be set!, test unchecked-math"
|
||||||
|
(bencode/write-bencode os {"op" "eval" "code" "(set! *unchecked-math* true)"
|
||||||
|
"session" session "id" (new-id!)})
|
||||||
|
(let [reply (read-reply in session @id)]
|
||||||
|
(is (= "true" (:value reply))))))))
|
||||||
|
|
||||||
(deftest ^:skip-windows nrepl-server-test
|
(deftest ^:skip-windows nrepl-server-test
|
||||||
(let [proc-state (atom nil)
|
(let [proc-state (atom nil)
|
||||||
server-state (atom nil)]
|
server-state (atom nil)
|
||||||
(try
|
ctx (sci/init {:namespaces main/namespaces
|
||||||
(if tu/jvm?
|
:features #{:bb}})]
|
||||||
(let [nrepl-opts (parse-opt "0.0.0.0:1668")
|
(sci.ctx-store/with-ctx ctx
|
||||||
nrepl-opts (assoc nrepl-opts
|
(try
|
||||||
:describe {"versions" {"babashka" main/version}})
|
|
||||||
server (start-server!
|
|
||||||
(init {:namespaces main/namespaces
|
|
||||||
:features #{:bb}})
|
|
||||||
nrepl-opts)]
|
|
||||||
(reset! server-state server))
|
|
||||||
(let [pb (ProcessBuilder. ["./bb" "nrepl-server" "0.0.0.0:1668"])
|
|
||||||
_ (.redirectError pb ProcessBuilder$Redirect/INHERIT)
|
|
||||||
;; _ (.redirectOutput pb ProcessBuilder$Redirect/INHERIT)
|
|
||||||
;; env (.environment pb)
|
|
||||||
;; _ (.put env "BABASHKA_DEV" "true")
|
|
||||||
proc (.start pb)]
|
|
||||||
(reset! proc-state proc)))
|
|
||||||
(babashka.wait/wait-for-port "localhost" 1668)
|
|
||||||
(nrepl-test)
|
|
||||||
(finally
|
|
||||||
(if tu/jvm?
|
(if tu/jvm?
|
||||||
(stop-server! @server-state)
|
(let [nrepl-opts (parse-opt "0.0.0.0:1668")
|
||||||
(when-let [proc @proc-state]
|
nrepl-opts (assoc nrepl-opts
|
||||||
(.destroy ^Process proc)))))))
|
:describe {"versions" {"babashka" main/version}})
|
||||||
|
server (start-server! nrepl-opts)]
|
||||||
|
(reset! server-state server))
|
||||||
|
(let [pb (ProcessBuilder. ["./bb" "nrepl-server" "0.0.0.0:1668"])
|
||||||
|
_ (.redirectError pb ProcessBuilder$Redirect/INHERIT)
|
||||||
|
;; _ (.redirectOutput pb ProcessBuilder$Redirect/INHERIT)
|
||||||
|
;; env (.environment pb)
|
||||||
|
;; _ (.put env "BABASHKA_DEV" "true")
|
||||||
|
proc (.start pb)]
|
||||||
|
(reset! proc-state proc)))
|
||||||
|
(babashka.wait/wait-for-port "localhost" 1668)
|
||||||
|
(nrepl-test)
|
||||||
|
(finally
|
||||||
|
(if tu/jvm?
|
||||||
|
(stop-server! @server-state)
|
||||||
|
(when-let [proc @proc-state]
|
||||||
|
(.destroy ^Process proc))))))))
|
||||||
|
|
||||||
;;;; Scratch
|
;;;; Scratch
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue