application/octet-stream
•
2.63 KB
•
67 lines
#!/usr/bin/env nujel
[require :ansi]
[require :test]
[def test/beginning [time/milliseconds]]
[def test/testsuite-errors 0]
[defn prog-str [fun-color i path start]
[cat "[" [fun-color [string/pad-start i 2]]
"/" [string/pad-start test/count 2]
"] " [string/pad-end [cut path 2 [length path]] 48]
[if start [cat " " [ansi/blue [string/pad-start [- [time/milliseconds] start] 8]] "ms"] #nil]]]
[when [not [tree/has? repl/options :only-test-suite]]
[println [ansi/purple "First we test the basic functions of the runtime."]]]
[for-each [-> [directory/read-relative "tests/testsuite"] sort] test/load-file]
[def output-passes #f]
[when [tree/has? repl/options :verbose]
[set! output-passes #t]]
[set! test/testsuite-errors [test/run output-passes]]
[file/test/directory "./stdlib_modules"]
[when [tree/has? repl/options :only-test-suite]
[exit test/testsuite-errors]]
[println [ansi/green "Great, Now we can do some more complicated and thorough tests."]]
[def test/slow [or [ref repl/options :slow-test] #f]]
[def test/ridiculous [or [ref repl/options :ridiculous-test] #f]]
[def test/start [time/milliseconds]]
[def test/success 0]
[def test/errors 0]
[def i 0]
[defn file/test [path]
[inc! i]
[def test/start/file [time/milliseconds]]
[try [fn [err]
[print "\r"]
[println [prog-str ansi/red i path test/start/file]]
[inc! test/errors]
[print/error err]
[newline]]
[print [prog-str ansi/yellow i path #nil]]
[def ret [file/eval path [environment*]]]
[when [not= ret :success] [exception :wrong-result "Test did not return :success"]]
[inc! test/success]
[print "\r"]
[println [prog-str ansi/green i path test/start/file]]]]
[def test-paths [list/sort [filter [append [directory/read-relative "./tests/fast"]
[when test/slow [directory/read-relative "./tests/slow"]]
[when test/ridiculous [directory/read-relative "./tests/ridiculous"]]]
[path/ext?! "nuj"]]]]
[def test/count [length test-paths]]
[for-each test-paths file/test]
[newline]
[def dur [- [time/milliseconds] test/start]]
[if [and [> test/success 0] [zero? test/errors]]
[do [println [cat [ansi/green "Extended Tests succeeded"] " - [" [ansi/green test/success] " / " [ansi/red test/errors] "] in " dur "ms"]]]
[do [println [cat [ansi/red "Extended Tests failed"] " - [" [ansi/green test/success] " / " [ansi/red test/errors] "] in " dur "ms"]]]]
[println [cat "Running everything took " [ansi/blue [- [time/milliseconds] test/beginning]] "ms"]]
[exit test/errors + test/testsuite-errors]