diff --git a/src/babashka/impl/tasks.clj b/src/babashka/impl/tasks.clj index ab6c24b1..9b870449 100644 --- a/src/babashka/impl/tasks.clj +++ b/src/babashka/impl/tasks.clj @@ -225,6 +225,8 @@ prog (wrap-def task-map prog parallel? last?)] prog))))) +(def rand-ns (delay (symbol (str "user-" (java.util.UUID/randomUUID))))) + (defn format-task [init extra-paths extra-deps requires prog] (format " %s ;; extra-paths @@ -255,7 +257,7 @@ (if (seq extra-deps) (format "(babashka.deps/add-deps '%s)" (pr-str {:deps extra-deps})) "") - (gensym "user") + @rand-ns (if (seq requires) (format "(:require %s)" (str/join " " requires)) "") diff --git a/test/babashka/bb_edn_test.clj b/test/babashka/bb_edn_test.clj index cf46d948..6c43a6ea 100644 --- a/test/babashka/bb_edn_test.clj +++ b/test/babashka/bb_edn_test.clj @@ -245,7 +245,19 @@ (binding [*foo* false *bar* true] [*foo* *bar*]))}} - (is (= [false true] (bb "run" "--prn" "a")))))) + (is (= [false true] (bb "run" "--prn" "a"))))) + (testing "stable namespace name" + (test-utils/with-config '{:tasks + {:init (do (def ^:dynamic *jdk*) + (def ^:dynamic *server*)) + server [*jdk* *server*] + run-all (for [jdk [8 11 15] + server [:foo :bar]] + (binding [*jdk* jdk + *server* server] + (babashka.tasks/run 'server)))}} + (is (= '([8 :foo] [8 :bar] [11 :foo] [11 :bar] [15 :foo] [15 :bar]) + (bb "run" "--prn" "run-all")))))) (deftest list-tasks-test (test-utils/with-config {}