From a464b59bc2b8d83d6e45a239b13fe86d9faa8e18 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Mon, 23 Jan 2023 16:35:51 +0100 Subject: [PATCH] Fix #1472: fix double tokenization when calling clojure from tasks --- CHANGELOG.md | 2 +- src/babashka/impl/tasks.clj | 3 --- test/babashka/deps_test.clj | 14 +++++++++----- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ddb84bc..05803fcf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ A preview of the next release can be installed from ## Unreleased -... +- [#1472](https://github.com/babashka/babashka/issues/1472): fix tokenization of `babashka.tasks/clojure`: command was tokenized twice ## 1.1.171 (2023-01-23) diff --git a/src/babashka/impl/tasks.clj b/src/babashka/impl/tasks.clj index f2775b8f..f4b75150 100644 --- a/src/babashka/impl/tasks.clj +++ b/src/babashka/impl/tasks.clj @@ -82,9 +82,6 @@ (update opts :err io/file) opts) opts) - cmd (if (.exists (io/file cmd)) - [cmd] - (p/tokenize cmd)) cmd (into cmd args) local-log-level (:log-level opts)] (sci/binding [log-level (or local-log-level @log-level)] diff --git a/test/babashka/deps_test.clj b/test/babashka/deps_test.clj index e130e680..4253cd04 100644 --- a/test/babashka/deps_test.clj +++ b/test/babashka/deps_test.clj @@ -7,10 +7,11 @@ [clojure.test :as test :refer [deftest is testing]])) (defn bb [& args] - (edn/read-string - {:readers *data-readers* - :eof nil} - (apply test-utils/bb nil (map str args)))) + (let [edn-str (apply test-utils/bb nil (map str args))] + (edn/read-string + {:readers *data-readers* + :eof nil} + edn-str))) (deftest dependency-test (is (= #{:a :c :b} (bb " @@ -102,7 +103,10 @@ true (bb (-> template (str/replace ":gitlibs" (pr-str (str libs-dir2))) (str/replace ":env-key" ":extra-env"))) (is (fs/exists? libs-dir)) - (is (fs/exists? libs-dir2)))))) + (is (fs/exists? libs-dir2))))) + (testing "tokenization when called from tasks" + (is (= '{:port 5555, :accept clojure.core.server/repl} + (bb (pr-str '(-> (babashka.tasks/clojure {:out :string} "-J-Dfoo=\"{:port 5555 :accept clojure.core.server/repl}\" -M -e \"(clojure.edn/read-string (System/getProperty (name :foo)))\"") :out edn/read-string))))))) (deftest ^:windows-only win-clojure-test (testing "GITLIBS can set location of .gitlibs dir"