Skip to content

Commit dbad832

Browse files
p4v4nbbatsov
authored andcommitted
Add tests for clojure-ts-find-ns
- The tests cases are copied from clojure-mode and updated
1 parent ccce18a commit dbad832

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

test/clojure-ts-mode-util-test.el

+103
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,110 @@
2323

2424
(require 'clojure-ts-mode)
2525
(require 'buttercup)
26+
(require 'test-helper "test/utils/test-helper")
2627

2728
(describe "clojure-ts-mode-version"
2829
(it "should not be nil"
2930
(expect clojure-ts-mode-version)))
31+
32+
(describe "clojure-ts-find-ns"
33+
(it "should find common namespace declarations"
34+
(with-clojure-ts-buffer "(ns foo)"
35+
(expect (clojure-ts-find-ns) :to-equal "foo"))
36+
(with-clojure-ts-buffer "(ns
37+
foo)"
38+
(expect (clojure-ts-find-ns) :to-equal "foo"))
39+
(with-clojure-ts-buffer "(ns foo.baz)"
40+
(expect (clojure-ts-find-ns) :to-equal "foo.baz"))
41+
(with-clojure-ts-buffer "(ns ^:bar foo)"
42+
(expect (clojure-ts-find-ns) :to-equal "foo"))
43+
(with-clojure-ts-buffer "(ns ^:bar ^:baz foo)"
44+
(expect (clojure-ts-find-ns) :to-equal "foo")))
45+
46+
(it "should find namespaces with spaces before ns form"
47+
(with-clojure-ts-buffer " (ns foo)"
48+
(expect (clojure-ts-find-ns) :to-equal "foo")))
49+
50+
(it "should skip namespaces within any comment forms"
51+
(with-clojure-ts-buffer "(comment
52+
(ns foo))"
53+
(expect (clojure-ts-find-ns) :to-equal nil))
54+
(with-clojure-ts-buffer " (ns foo)
55+
(comment
56+
(ns bar))"
57+
(expect (clojure-ts-find-ns) :to-equal "foo"))
58+
(with-clojure-ts-buffer " (comment
59+
(ns foo))
60+
(ns bar)
61+
(comment
62+
(ns baz))"
63+
(expect (clojure-ts-find-ns) :to-equal "bar")))
64+
65+
(it "should find namespace declarations with nested metadata and docstrings"
66+
(with-clojure-ts-buffer "(ns ^{:bar true} foo)"
67+
(expect (clojure-ts-find-ns) :to-equal "foo"))
68+
(with-clojure-ts-buffer "(ns #^{:bar true} foo)"
69+
(expect (clojure-ts-find-ns) :to-equal "foo"))
70+
(with-clojure-ts-buffer "(ns #^{:fail {}} foo)"
71+
(expect (clojure-ts-find-ns) :to-equal "foo"))
72+
(with-clojure-ts-buffer "(ns ^{:fail2 {}} foo.baz)"
73+
(expect (clojure-ts-find-ns) :to-equal "foo.baz"))
74+
(with-clojure-ts-buffer "(ns ^{} foo)"
75+
(expect (clojure-ts-find-ns) :to-equal "foo"))
76+
(with-clojure-ts-buffer "(ns ^{:skip-wiki true}
77+
aleph.netty)"
78+
(expect (clojure-ts-find-ns) :to-equal "aleph.netty"))
79+
(with-clojure-ts-buffer "(ns ^{:foo {:bar :baz} :fake (ns in.meta)} foo
80+
\"docstring
81+
(ns misleading)\")"
82+
(expect (clojure-ts-find-ns) :to-equal "foo")))
83+
84+
(it "should support non-alphanumeric characters"
85+
(with-clojure-ts-buffer "(ns foo+)"
86+
(expect (clojure-ts-find-ns) :to-equal "foo+"))
87+
(with-clojure-ts-buffer "(ns bar**baz$-_quux)"
88+
(expect (clojure-ts-find-ns) :to-equal "bar**baz$-_quux"))
89+
(with-clojure-ts-buffer "(ns aoc-2019.puzzles.day14)"
90+
(expect (clojure-ts-find-ns) :to-equal "aoc-2019.puzzles.day14")))
91+
92+
(it "should support in-ns forms"
93+
(with-clojure-ts-buffer "(in-ns 'bar.baz)"
94+
(expect (clojure-ts-find-ns) :to-equal "bar.baz")))
95+
96+
(it "should take the first ns instead of closest unlike clojure-mode"
97+
(with-clojure-ts-buffer " (ns foo1)
98+
99+
(ns foo2)"
100+
(expect (clojure-ts-find-ns) :to-equal "foo1"))
101+
(with-clojure-ts-buffer-point " (in-ns foo1)
102+
(ns 'foo2)
103+
(in-ns 'foo3)
104+
|
105+
(ns foo4)"
106+
(expect (clojure-ts-find-ns) :to-equal "foo3"))
107+
(with-clojure-ts-buffer "(ns foo)
108+
(ns-unmap *ns* 'map)
109+
(ns.misleading 1 2 3)"
110+
(expect (clojure-ts-find-ns) :to-equal "foo")))
111+
112+
(it "should skip leading garbage"
113+
(with-clojure-ts-buffer " (ns foo)"
114+
(expect (clojure-ts-find-ns) :to-equal "foo"))
115+
(with-clojure-ts-buffer "1(ns foo)"
116+
(expect (clojure-ts-find-ns) :to-equal "foo"))
117+
(with-clojure-ts-buffer "1 (ns foo)"
118+
(expect (clojure-ts-find-ns) :to-equal "foo"))
119+
(with-clojure-ts-buffer "1
120+
(ns foo)"
121+
(expect (clojure-ts-find-ns) :to-equal "foo"))
122+
(with-clojure-ts-buffer "[1]
123+
(ns foo)"
124+
(expect (clojure-ts-find-ns) :to-equal "foo"))
125+
(with-clojure-ts-buffer "[1] (ns foo)"
126+
(expect (clojure-ts-find-ns) :to-equal "foo"))
127+
(with-clojure-ts-buffer "[1](ns foo)"
128+
(expect (clojure-ts-find-ns) :to-equal "foo"))
129+
(with-clojure-ts-buffer "(ns)(ns foo)"
130+
(expect (clojure-ts-find-ns) :to-equal "foo"))
131+
(with-clojure-ts-buffer "(ns 'foo)(ns bar)"
132+
(expect (clojure-ts-find-ns) :to-equal "bar"))))

0 commit comments

Comments
 (0)