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"))
|
||||
opts (merge {:debug dev?
|
||||
: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)]
|
||||
(server/start-server! (common/ctx) opts))))
|
||||
|
||||
|
|
|
|||
|
|
@ -357,6 +357,7 @@ Use bb run --help to show this help output.
|
|||
sci-types/Eval
|
||||
(eval [_ _ctx _bindings]
|
||||
(force @input-var)))}
|
||||
'clojure.core core-extras
|
||||
'clojure.tools.cli tools-cli-namespace
|
||||
'clojure.java.shell shell-namespace
|
||||
'babashka.core bbcore/core-namespace
|
||||
|
|
@ -875,10 +876,7 @@ Use bb run --help to show this help output.
|
|||
main)
|
||||
;; TODO: pull more of these values to compile time
|
||||
opts {:aliases aliases
|
||||
:namespaces (-> namespaces
|
||||
(assoc 'clojure.core
|
||||
(assoc core-extras
|
||||
'load-file (sci-copy-vars/new-var 'load-file load-file*))))
|
||||
:namespaces (assoc-in namespaces ['clojure.core 'load-file] (sci-copy-vars/new-var 'load-file load-file*))
|
||||
:env env
|
||||
:features #{:bb :clj}
|
||||
:classes @classes/class-map
|
||||
|
|
|
|||
|
|
@ -1,13 +1,16 @@
|
|||
(ns babashka.impl.nrepl-server-test
|
||||
(:require
|
||||
[babashka.impl.nrepl-server :refer [start-server!]]
|
||||
[babashka.nrepl.server :refer [parse-opt stop-server!]]
|
||||
[babashka.main :as main]
|
||||
[babashka.nrepl.server :refer [start-server! stop-server! parse-opt]]
|
||||
[babashka.test-utils :as tu]
|
||||
[babashka.wait :as wait]
|
||||
[bencode.core :as bencode]
|
||||
[clojure.test :as t :refer [deftest is testing]]
|
||||
[sci.impl.opts :refer [init]])
|
||||
(:import [java.lang ProcessBuilder$Redirect]))
|
||||
[sci.core :as sci]
|
||||
[sci.ctx-store :as ctx-store])
|
||||
(:import
|
||||
[java.lang ProcessBuilder$Redirect]))
|
||||
|
||||
(def debug? false)
|
||||
|
||||
|
|
@ -87,13 +90,13 @@
|
|||
(is (= ":foo0" (:value (read-reply in session @id)))))
|
||||
;; TODO: I don't remember why we created a new ns
|
||||
#_(testing "providing an ns value of a non-existing namespace creates the namespace"
|
||||
(bencode/write-bencode os {"op" "eval"
|
||||
"code" "(ns-name *ns*)"
|
||||
"session" session
|
||||
"id" (new-id!)
|
||||
"ns" "unicorn"})
|
||||
(let [reply (read-reply in session @id)]
|
||||
(is (= "unicorn" (:value reply))))))
|
||||
(bencode/write-bencode os {"op" "eval"
|
||||
"code" "(ns-name *ns*)"
|
||||
"session" session
|
||||
"id" (new-id!)
|
||||
"ns" "unicorn"})
|
||||
(let [reply (read-reply in session @id)]
|
||||
(is (= "unicorn" (:value reply))))))
|
||||
(testing "multiple top level expressions results in two value replies"
|
||||
(bencode/write-bencode os {"op" "eval"
|
||||
"code" "(+ 1 2 3) (+ 1 2 3)"
|
||||
|
|
@ -181,35 +184,40 @@
|
|||
"session" session "id" (new-id!)})
|
||||
(dotimes [_ 3]
|
||||
(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
|
||||
(let [proc-state (atom nil)
|
||||
server-state (atom nil)]
|
||||
(try
|
||||
(if tu/jvm?
|
||||
(let [nrepl-opts (parse-opt "0.0.0.0:1668")
|
||||
nrepl-opts (assoc nrepl-opts
|
||||
: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
|
||||
server-state (atom nil)
|
||||
ctx (sci/init {:namespaces main/namespaces
|
||||
:features #{:bb}})]
|
||||
(sci.ctx-store/with-ctx ctx
|
||||
(try
|
||||
(if tu/jvm?
|
||||
(stop-server! @server-state)
|
||||
(when-let [proc @proc-state]
|
||||
(.destroy ^Process proc)))))))
|
||||
(let [nrepl-opts (parse-opt "0.0.0.0:1668")
|
||||
nrepl-opts (assoc nrepl-opts
|
||||
: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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue