Janet 1.39.1-e9c6678 Documentation
(Other Versions:
1.38.0
1.37.1
1.36.0
1.35.0
1.34.0
1.31.0
1.29.1
1.28.0
1.27.0
1.26.0
1.25.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.0
1.18.1
1.17.1
1.16.1
1.15.0
1.13.1
1.12.2
1.11.1
1.10.1
1.9.1
1.8.1
1.7.0
1.6.0
1.5.1
1.5.0
1.4.0
1.3.1
)
test
This module contains a simple test helper when you do not need a specialized library.
Examples
assert
Modified version of `assert`, with some nice error handling.
(test/assert false "How is this?")
# => ✘ How is this?
(test/assert true "OK")
# => ✔true
assert-not
Invert assert.
(test/assert-not false "OK")
# => ✔true
assert-error
Test passes if forms throw errors.
(test/assert-error "To err is natural" (error "Bad"))
# => ✔true
assert-no-error
Test passes if forms throw errors.
(test/assert-no-error "To not err is desired" (do "Good"))
# => ✔true
start-suite
Starts test suite, which counts all and passed tests.
end-suite
Ends test suite, prints summary and exits if any have failed.
All together
Example of simple test suite.
(import spork/test)
(test/start-suite 0)
(test/assert true "is always true")
(test/assert-not false "is always false")
(test/assert-error "To err is natural" (error "Bad"))
(test/assert-no-error "To not err is desired" (do "Good"))
(test/end-suite)
# =>
Test suite 0 finished in 0.000 soconds
4 of 4 tests passed.
timeit
Time code execution using os/clock, and print the result. Returns the value of the timed expression.
repl> (test/timeit (sum (seq [i :range [1 1000000]] (math/sqrt i))))
Elapsed time: 0.0718288 seconds
6.66666e+08
capture-stdout
Runs the body and captures stdout. Returns tuple with result and captured stdout in string.
(capture-stdout
(print "Interesting output")
true)
# => (true "Interesting output")
capture-stderr
Runs the body and captures stderr. Returns tuple with result and captured stderr in string.
(capture-stderr
(print "Interesting output")
true)
# => (true "Interesting output")
supress-stdout
Runs the form, but supresses its stdout.
(suppress-stdout (print "Hello world!"))
# => nil
supress-stderr
Runs the form, but supresses its stderr.
(suppress-stderr (eprint "Hello world!"))
# => nil
assert-docs
Asserts that all public bindings from the environment have docstring, when the `path` is required.
(assert-doc "/spork/test")
✘ suppress-stderr does not have proper doc
Reference
test/assert test/assert-docs test/assert-error test/assert-no-error test/assert-not test/capture-stderr test/capture-stdout test/end-suite test/start-suite test/suppress-stderr test/suppress-stdout test/timeit test/timeit-loop
(assert x &opt e) Overrides the default assert with some nice error handling.
(assert-docs path) Assert that all symbols have proper docstring when module on the path is required.
(capture-stderr & body) Runs the form and captures stderr. Returns tuple with result of the form and a string with captured stderr.
(capture-stdout & body) Runs the form and captures stdout. Returns tuple with result of the form and a string with captured stdout.
(end-suite) Ends test suite, prints summary and exits if any tests have failed.
(timeit form &opt tag) Time the execution of `form` using `os/clock` before and after, and print the result to stdout. Returns result of executing `form`. Uses `tag` (default "Elapsed time:") to tag the printout.
(timeit-loop head & body) Similar to `loop`, but outputs performance statistics after completion. Additionally defines a `:timeout` verb to iterate continuously for a given number of seconds. If the first form of `body` is a bytes, it will be taken as a custom tag.