From 3110dde2aba4c6a8672980715c403b484edf23f1 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Thu, 22 Sep 2022 20:04:41 +0200 Subject: [PATCH] Fix #1368: -x: do not pick up on aliases in user ns --- CHANGELOG.md | 1 + src/babashka/impl/cli.clj | 15 +++++++++------ test/babashka/exec_test.clj | 16 ++++++++++++++++ 3 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 test/babashka/exec_test.clj diff --git a/CHANGELOG.md b/CHANGELOG.md index f464ef06..e4633746 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ A preview of the next release can be installed from ## Unreleased +- [#1368](https://github.com/babashka/babashka/issues/1368): `-x`: do not pick up on aliases in `user` ns - [#1367](https://github.com/babashka/babashka/issues/1367): Fix line number in clojure.test output ([@retrogradeorbit](https://github.com/retrogradeorbit)) - [#1370](https://github.com/babashka/babashka/issues/1370): Add `core.async` `to-chan!`, `to-chan!!`, `onto-chan!` ([@cap10morgan](https://github.com/cap10morgan)) - [#1358](https://github.com/babashka/babashka/issues/1358): Expose a subset of java.lang.ref to enable hooking into the destruction/GC of objects ([@retrogradeorbit](https://github.com/retrogradeorbit)) diff --git a/src/babashka/impl/cli.clj b/src/babashka/impl/cli.clj index e915057a..fcbbe8ef 100644 --- a/src/babashka/impl/cli.clj +++ b/src/babashka/impl/cli.clj @@ -12,10 +12,11 @@ ([sym] (exec-fn-snippet sym nil)) ([sym extra-opts] (format " -(do -(require '[babashka.cli]) -(let [extra-opts '%2$s - the-var (requiring-resolve `%1$s) +(ns exec-%s + (:require [babashka.cli :as cli])) +(let [extra-opts '%s + sym `%s + the-var (requiring-resolve sym) the-var-meta (meta the-var) ns (:ns (meta the-var)) ns-meta (meta ns) @@ -28,6 +29,8 @@ task-exec-args (:exec-args ct) cli-exec-args (:exec-args cli-opts) opts (babashka.cli/merge-opts cli-exec-args task-exec-args opts)] -(the-var opts)))" +(the-var opts))" + (random-uuid) + (pr-str extra-opts) sym - (pr-str extra-opts)))) + ))) diff --git a/test/babashka/exec_test.clj b/test/babashka/exec_test.clj new file mode 100644 index 00000000..4ff54716 --- /dev/null +++ b/test/babashka/exec_test.clj @@ -0,0 +1,16 @@ +(ns babashka.exec-test + (:require + [babashka.test-utils :as u] + [cheshire.core :as cheshire] + [clojure.edn :as edn] + [clojure.test :as t :refer [deftest is]])) + +(defn bb [& args] + (apply u/bb nil args)) + +(deftest exec-test + (is (= {:foo 1} (edn/read-string (bb "-x" "prn" "--foo" "1")))) + (is (thrown? Exception (bb "-x" "json/generate-string" "--foo" "1"))) + (is (= {:foo 1} (cheshire/parse-string + (edn/read-string + (bb "-x" "cheshire.core/generate-string" "--foo" "1")) true))))