Skip to content

Commit 2f0c86e

Browse files
cemerickstuarthalloway
authored andcommitted
CLJ-960: tests for :line and :column metadata as provided by LineNumberingPushbackReader
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
1 parent a76c4b8 commit 2f0c86e

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

test/clojure/test_clojure/reader.clj

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
(:use [clojure.instant :only [read-instant-date
2222
read-instant-calendar
2323
read-instant-timestamp]])
24+
(:require clojure.walk)
2425
(:import [clojure.lang BigInt Ratio]
2526
java.io.File
2627
java.util.TimeZone))
@@ -395,6 +396,41 @@
395396

396397
;; Metadata (^ or #^ (deprecated))
397398

399+
(deftest t-line-column-numbers
400+
(let [code "(ns reader-metadata-test
401+
(:require [clojure.java.io
402+
:refer (resource reader)]))
403+
404+
(let [a 5]
405+
^:added-metadata
406+
(defn add-5
407+
[x]
408+
(reduce + x (range a))))"
409+
stream (clojure.lang.LineNumberingPushbackReader.
410+
(java.io.StringReader. code))
411+
top-levels (take-while identity (repeatedly #(read stream false nil)))
412+
expected-metadata '{ns {:line 1, :column 1}
413+
:require {:line 2, :column 3}
414+
resource {:line 3, :column 21}
415+
let {:line 5, :column 1}
416+
defn {:line 6, :column 3 :added-metadata true}
417+
reduce {:line 9, :column 5}
418+
range {:line 9, :column 17}}
419+
verified-forms (atom 0)]
420+
(doseq [form top-levels]
421+
(clojure.walk/postwalk
422+
#(when (list? %)
423+
(is (= (expected-metadata (first %))
424+
(meta %)))
425+
(is (->> (meta %)
426+
vals
427+
(filter number?)
428+
(every? (partial instance? Integer))))
429+
(swap! verified-forms inc))
430+
form))
431+
;; sanity check against e.g. reading returning ()
432+
(is (= (count expected-metadata) @verified-forms))))
433+
398434
(deftest t-Metadata
399435
(is (= (meta '^:static ^:awesome ^{:static false :bar :baz} sym) {:awesome true, :bar :baz, :static true})))
400436

0 commit comments

Comments
 (0)