1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
(ns clj-stacktrace.core-test
(:use clojure.test)
(:use clj-stacktrace.core)
(:use clj-stacktrace.utils))
(def cases
[["foo.bar$biz__123" "invoke" "bar.clj" 456
{:clojure true :ns "foo.bar" :fn "biz"
:file "bar.clj" :line 456 :anon-fn false}]
["foo.bar$biz_bat__123" "invoke" "bar.clj" 456
{:clojure true :ns "foo.bar" :fn "biz-bat"
:file "bar.clj" :line 456 :anon-fn false}]
["foo.bar$biz_bat_QMARK___448" "invoke" "bar.clj" 456
{:clojure true :ns "foo.bar" :fn "biz-bat?"
:file "bar.clj" :line 456 :anon-fn false}]
["foo.bar$biz_bat_QMARK___448$fn__456" "invoke" "bar.clj" 456
{:clojure true :ns "foo.bar" :fn "biz-bat?"
:file "bar.clj" :line 456 :anon-fn true}]
["foo.bar$repl$fn__5629.invoke" "invoke" "bar.clj" 456
{:clojure true :ns "foo.bar" :fn "repl"
:file "bar.clj" :line 456 :anon-fn true}]
["foo.bar$repl$read_eval_print__5624" "invoke" "bar.clj" 456
{:clojure true :ns "foo.bar" :fn "repl"
:file "bar.clj" :line 456 :anon-fn true}]
["foo.bar$biz__123$fn__456" "invoke" "bar.clj" 789
{:clojure true :ns "foo.bar" :fn "biz"
:file "bar.clj" :line 789 :anon-fn true}]
["foo.bar_bat$biz__123" "invoke" "bar.clj" 456
{:clojure true :ns "foo.bar-bat" :fn "biz"
:file "bar.clj" :line 456 :anon-fn false}]
["user$eval__345" "invoke" nil -1
{:clojure true :ns "user" :fn "eval"
:file nil :line nil :anon-fn false}]
["lamina.core.observable.ConstantObservable" "message" "observable.clj" 198
{:clojure true :ns "lamina.core.observable"
:fn "lamina.core.observable.ConstantObservable"
:file "observable.clj" :line 198 :anon-fn false}]
["clojure.lang.Var" "invoke" "Var.java" 123
{:java true :class "clojure.lang.Var" :method "invoke"
:file "Var.java" :line 123}]
["clojure.proxy.space.SomeClass" "someMethod" "SomeClass.java" 123
{:java true :class "clojure.proxy.space.SomeClass" :method "someMethod"
:file "SomeClass.java" :line 123}]
["some.space.SomeClass" "someMethod" "SomeClass.java" 123
{:java true :class "some.space.SomeClass" :method "someMethod"
:file "SomeClass.java" :line 123}]
["some.space.SomeClass$SomeInner" "someMethod" "SomeClass.java" 123
{:java true :class "some.space.SomeClass$SomeInner" :method "someMethod"
:file "SomeClass.java" :line 123}]
["some.space.SomeClass" "someMethod" nil -1
{:java true :class "some.space.SomeClass" :method "someMethod"
:file nil :line nil}]])
(deftest test-parse-trace-elem
(doseq [[class method file line parsed] cases
:let [elem (StackTraceElement. class method file line)]]
(is (= parsed (parse-trace-elem elem)))))
(deftest test-trim-redundant
(let [trim-fn (resolve 'clj-stacktrace.core/trim-redundant)]
(is (= '(d c) (trim-fn '(d c b a) '(f e b a))))
(is (= '(c) (trim-fn '(c b a) '(f e b a))))
(is (= '(d c) (trim-fn '(d c b a) '(e b a))))))
(deftest test-parse-exception
(try
(eval '(/))
(catch Exception e
(is (parse-exception e)))))
|