diff --git a/src/babashka/main.clj b/src/babashka/main.clj index e65318f5..fc744eb7 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -362,7 +362,7 @@ Use -- to separate script command line args from bb command line args. (defn error [msg exit] (binding [*out* *err*] (println msg) - {:exec (fn [] exit)})) + {:exec (fn [] [nil exit])})) (defn parse-opts [options] (let [opts (loop [options options @@ -515,7 +515,10 @@ Use -- to separate script command line args from bb command line args. :shell (let [args (get task :args)] {:exec (fn [] - (p/process args {:inherit true}) p/check)}) + [nil + (-> (p/process args {:inherit true}) + p/check + :exit)])}) :fn (let [var (get task :var) var-sym (symbol var)] @@ -708,7 +711,7 @@ Use -- to separate script command line args from bb command line args. :verbose? verbose? :preloads preloads :loader (:loader @cp/cp-state)})))) - exec-fn [(exec-fn) 0] + exec-fn (exec-fn) exec-src [(sci/binding [sci/file (or @sci/file "")] (sci/eval-string* sci-ctx exec-src)) 0] diff --git a/test/babashka/test_utils.clj b/test/babashka/test_utils.clj index 547d8a3b..384f75c8 100644 --- a/test/babashka/test_utils.clj +++ b/test/babashka/test_utils.clj @@ -10,6 +10,7 @@ (defn bb-jvm [input-or-opts & args] (reset! cp/cp-state nil) + (reset! main/env {}) (let [os (java.io.StringWriter.) es (if-let [err (:err input-or-opts)] err (java.io.StringWriter.)) @@ -30,6 +31,7 @@ (if (string? input-or-opts) (with-in-str input-or-opts (apply main/main args)) (apply main/main args)))] + ;; (prn :err (str es)) (if (zero? res) (str os) (throw (ex-info (str es)