application/octet-stream
•
1.58 KB
•
47 lines
#!/usr/bin/env nujel
[def test/beginning [time/milliseconds]]
[test-run]
[println [ansi-purple "Now running the AoC Tests, this might take a while."]]
[path/change "tests/"]
[def ext-nuj? [path/ext?! "nuj"]]
[defun directory/read-relative [path]
[map [\ [α] [cat path "/" α]]
[directory/read path]]
]
[defun prog-str [fun-color i path]
[cat "[" [fun-color [string/pad-start i 2]] "/" [string/pad-start test/count 2] "] " [substr path 2 [length path]]]
]
[def test/start [time/milliseconds]]
[def test/success 0]
[def test/errors 0]
[def i]
[defun file/test [path]
[++ i]
[try [\ [err]
[print "\r"]
[println [prog-str ansi-red i path]]
[++ test/errors]
[display/error err]
[newline]]
[print [prog-str ansi-yellow i path]]
[file/eval path [ω]]
[++ test/success]
[print "\r"]
[println [prog-str ansi-green i path]]
]
]
[def test-paths [list/sort [filter ext-nuj? [directory/read-relative "."]]]]
[def test/count [length test-paths]]
[for-each file/test test-paths]
[newline]
[def dur [- [time/milliseconds] test/start]]
[if [and [> test/success 0] [zero? test/errors]]
[do [println [cat [ansi-green "AoC Tests succeeded"] " - [" [ansi-green test/success] " / " [ansi-red test/errors] "] in " dur "ms"]]]
[do [println [cat [ansi-red "AoC 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]