Skip to content

Commit

Permalink
Change default to no prefix re-writing
Browse files Browse the repository at this point in the history
The default has already been changed in clj-refactor so this is
essentially a no-op, but makes the change more explicit for those
working on the middleware.
  • Loading branch information
expez authored and bbatsov committed Jun 28, 2021
1 parent 5d4ff16 commit 2295c2c
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 25 deletions.
2 changes: 1 addition & 1 deletion src/refactor_nrepl/config.clj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
:prune-ns-form true

;; Should `clean-ns` favor prefix forms in the ns macro?
:prefix-rewriting true
:prefix-rewriting false

;; Should `pprint-ns` place a newline after the `:require` and `:import` tokens?
:insert-newline-after-require true
Expand Down
45 changes: 28 additions & 17 deletions test/refactor_nrepl/ns/clean_ns_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -57,18 +57,18 @@
(def ns-with-npm-strs-clean (clean-msg "test/resources/ns_with_npm_strs_clean.cljs"))

(deftest combines-requires
(let [requires (core/get-ns-component (clean-ns ns2) :require)
(let [prefix-requires (config/with-config {:prefix-rewriting true}
(core/get-ns-component (clean-ns ns2) :require))
combined-requires (core/get-ns-component ns2-cleaned :require)]
(is (= combined-requires requires))))
(is (= combined-requires prefix-requires))))

(deftest meta-preserved
(let [cleaned (pprint-ns (clean-ns ns2-meta))]
(is (str/includes? cleaned "^{:author \"Trurl and Klapaucius\"
:doc \"test ns with meta\"}"))))

(deftest rewrites-use-to-require
(let [requires (core/get-ns-component (clean-ns ns2) :use)
combined-requires (core/get-ns-component ns2-cleaned :require)]
(let [combined-requires (core/get-ns-component ns2-cleaned :require)]
(is (reduce
#(or %1 (= %2 '[clojure
[edn :refer :all :rename {read-string rs}]
Expand All @@ -80,15 +80,16 @@
(tree-seq sequential? identity combined-requires)))))

(deftest keeps-clause-with-rename
(let [requires (core/get-ns-component (clean-ns ns2) :use)
combined-requires (core/get-ns-component ns2-cleaned :require)]
(let [combined-requires (core/get-ns-component ns2-cleaned :require)]
(is (reduce
#(or %1 (= %2 '[edn :refer :all :rename {read-string rs}]))
false
(tree-seq sequential? identity combined-requires)))))

(deftest test-sort-and-prefix-favoring
(let [requires (core/get-ns-component (clean-ns ns1) :require)
(let [requires (core/get-ns-component
(config/with-config {:prefix-rewriting true}
(clean-ns ns1)) :require)
imports (core/get-ns-component (clean-ns ns1) :import)
sorted-requires (core/get-ns-component ns1-cleaned :require)
sorted-imports (core/get-ns-component ns1-cleaned :import)]
Expand Down Expand Up @@ -127,13 +128,18 @@
false
(tree-seq sequential? identity requires)))))

(deftest combines-multiple-refers-to-all
(let [requires (clean-ns ns2)
instant '[instant :refer :all]]
(is (reduce
#(or %1 (= %2 instant))
false
(tree-seq sequential? identity requires)))))
(deftest combines-multiple-refer-alls
(let [[_ & libspecs] (core/get-ns-component (clean-ns ns2) :require)
instant '[clojure.instant :refer :all]]
(is (= (:count (reduce
(fn [acc libspec]
(if (= libspec instant)
(update acc :count inc)
acc))
{:count 0}
libspecs))
1)
"Exactly one libspec present for duplicated :refer :all clause")))

(deftest removes-unused-dependencies
(let [new-ns (clean-ns ns-with-unused-deps)
Expand Down Expand Up @@ -196,7 +202,8 @@
cljc-ns-same-clj-cljs-cleaned)))

(deftest respects-no-prune-option
(config/with-config {:prune-ns-form false}
(config/with-config {:prune-ns-form false
:prefix-rewriting true}
(let [new-require (core/get-ns-component (clean-ns ns3) :require)
expected-require (core/get-ns-component ns3-rebuilt :require)]
(is (= expected-require new-require)))))
Expand All @@ -206,8 +213,12 @@

(deftest test-pprint
(let [ns-str (pprint-ns (clean-ns ns1))
ns1-str (slurp (.getAbsolutePath (File. "test/resources/ns1_cleaned_and_pprinted")))]
(is (= ns1-str ns-str))))
ns1-str (slurp "test/resources/ns1_cleaned_and_pprinted")
ns1-prefix-notation (slurp "test/resources/ns1_cleaned_and_pprinted_prefix_notation")]
(is (= ns1-str ns-str))
(is (= ns1-prefix-notation (config/with-config
{:prefix-rewriting true}
(pprint-ns (clean-ns ns1)))))))

(deftest preserves-shorthand-meta
(let [cleaned (pprint-ns (clean-ns ns-with-shorthand-meta))]
Expand Down
16 changes: 9 additions & 7 deletions test/resources/ns1_cleaned_and_pprinted
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,15 @@
:extends java.lang.Exception
:methods [[binomial [int int] double]])
(:require
[clojure data edn xml
[instant :as inst :reload true]
[pprint :refer [cl-format formatter get-pretty-writer]]
[string :refer :all :reload-all true]
[test :refer :all]
[walk :refer [postwalk prewalk]]]
clojure.test.junit)
clojure.data
clojure.edn
[clojure.instant :as inst :reload true]
[clojure.pprint :refer [cl-format formatter get-pretty-writer]]
[clojure.string :refer :all :reload-all true]
[clojure.test :refer :all]
clojure.test.junit
[clojure.walk :refer [postwalk prewalk]]
clojure.xml)
(:import
[java.io Closeable FilenameFilter PushbackReader]
[java.util Calendar Date Random]
Expand Down
22 changes: 22 additions & 0 deletions test/resources/ns1_cleaned_and_pprinted_prefix_notation
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
(ns resources.ns1
"This is a docstring for the ns

It contains an \"escaped string\"."
{:author "Winnie the pooh"}
(:refer-clojure :exclude [macroexpand-1 read read-string])
(:gen-class
:name com.domain.tiny
:extends java.lang.Exception
:methods [[binomial [int int] double]])
(:require
[clojure data edn xml
[instant :as inst :reload true]
[pprint :refer [cl-format formatter get-pretty-writer]]
[string :refer :all :reload-all true]
[test :refer :all]
[walk :refer [postwalk prewalk]]]
clojure.test.junit)
(:import
[java.io Closeable FilenameFilter PushbackReader]
[java.util Calendar Date Random]
[refactor.nrepl SomeClass$InnerClass$InnerInnerClassOne SomeClass$InnerClass$InnerInnerClassTwo]))

0 comments on commit 2295c2c

Please sign in to comment.