Partial fix for #1456 (nREPL issue) (#1460)

Co-authored-by: axks <alexander.kaiser@blockinfinity.com>
This commit is contained in:
Michiel Borkent 2023-01-04 20:46:04 +01:00 committed by GitHub
parent 5965e32d26
commit 3aca505790
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 40 deletions

View file

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

View file

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

View file

@ -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)
@ -181,20 +184,25 @@
"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)
ctx (sci/init {:namespaces main/namespaces
:features #{:bb}})]
(sci.ctx-store/with-ctx ctx
(try (try
(if tu/jvm? (if tu/jvm?
(let [nrepl-opts (parse-opt "0.0.0.0:1668") (let [nrepl-opts (parse-opt "0.0.0.0:1668")
nrepl-opts (assoc nrepl-opts nrepl-opts (assoc nrepl-opts
:describe {"versions" {"babashka" main/version}}) :describe {"versions" {"babashka" main/version}})
server (start-server! server (start-server! nrepl-opts)]
(init {:namespaces main/namespaces
:features #{:bb}})
nrepl-opts)]
(reset! server-state server)) (reset! server-state server))
(let [pb (ProcessBuilder. ["./bb" "nrepl-server" "0.0.0.0:1668"]) (let [pb (ProcessBuilder. ["./bb" "nrepl-server" "0.0.0.0:1668"])
_ (.redirectError pb ProcessBuilder$Redirect/INHERIT) _ (.redirectError pb ProcessBuilder$Redirect/INHERIT)
@ -209,7 +217,7 @@
(if tu/jvm? (if tu/jvm?
(stop-server! @server-state) (stop-server! @server-state)
(when-let [proc @proc-state] (when-let [proc @proc-state]
(.destroy ^Process proc))))))) (.destroy ^Process proc))))))))
;;;; Scratch ;;;; Scratch