Remove faith's readme
This commit is contained in:
parent
1f44c99ef1
commit
7469a8854c
@ -1,121 +0,0 @@
|
|||||||
# Faith
|
|
||||||
|
|
||||||
> It's been a long road...
|
|
||||||
> Getting from there to here.
|
|
||||||
|
|
||||||
The Fennel Advanced Interactive Test Helper.
|
|
||||||
|
|
||||||
To use Faith, create a test runner file which calls the `run` function with
|
|
||||||
a list of module names. The modules should export functions whose
|
|
||||||
names start with `test-` and which call the assertion functions in the
|
|
||||||
`faith` module.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
Your test runner file `test/init.fnl` can be very short:
|
|
||||||
|
|
||||||
```fennel
|
|
||||||
(local t (require :faith))
|
|
||||||
|
|
||||||
(local default-modules [:test.one-thing :test.other :test.third])
|
|
||||||
|
|
||||||
(t.run (if (= 0 (length arg)) default-modules arg))
|
|
||||||
```
|
|
||||||
|
|
||||||
You can run the `t.run` function from the REPL as well after reloading
|
|
||||||
your test modules.
|
|
||||||
|
|
||||||
Tests are just functions in test modules which call assertion functions.
|
|
||||||
|
|
||||||
```fennel
|
|
||||||
(local t (require :faith))
|
|
||||||
|
|
||||||
;; A setup-all function can load files from disk; connect to a server, etc
|
|
||||||
(fn setup-all []
|
|
||||||
(with-open [f (io.open "test/data.txt")]
|
|
||||||
(let [contents (f:read :*all)]
|
|
||||||
;; whatever the setup-all function returns will be passed as
|
|
||||||
;; an argument to every test function.
|
|
||||||
{: contents :length (length contents) :status "initialized"})))
|
|
||||||
|
|
||||||
(fn test-add [_data]
|
|
||||||
(t.= 2 (+ 1 1))
|
|
||||||
;; assert= tests for deep equality, not just table identity
|
|
||||||
(t.= [1 99] [1 (+ 45 44)]))
|
|
||||||
|
|
||||||
(fn test-check [data]
|
|
||||||
(t.= 0 (- 2 2)))
|
|
||||||
|
|
||||||
{: setup-all
|
|
||||||
: test-add
|
|
||||||
: test-check}
|
|
||||||
```
|
|
||||||
|
|
||||||
You can provide `setup` and `teardown` functions to run before and after
|
|
||||||
each test, as well as, `setup-all` and `teardown-all` to run before and
|
|
||||||
after each test module. Whatever values `setup-all` returns are passed
|
|
||||||
into each of the test functions and also the `teardown-all` function.
|
|
||||||
|
|
||||||
Note that in a language like Fennel that has tail-call optimization,
|
|
||||||
it's possible for an assertion on the last line of a function to fail
|
|
||||||
in a way that obscures the line number of the failure. If this is a
|
|
||||||
concern, you can put a `nil` or `(values)` on the last line of each
|
|
||||||
test function.
|
|
||||||
|
|
||||||
This is an issue for any test framework; it is not specific to Faith.
|
|
||||||
|
|
||||||
Faith supports PUC Lua 5.1 to 5.4 as well as LuaJIT.
|
|
||||||
|
|
||||||
If the `luasocket` or `luaposix` libraries are installed, Faith will
|
|
||||||
use them to calculate the total runtime of the test run. Without these
|
|
||||||
libraries, Lua is unable to track elapsed time with granularity of
|
|
||||||
under a second, so approximate times will be displayed instead.
|
|
||||||
|
|
||||||
## Assertions
|
|
||||||
|
|
||||||
All assertions take an optional message string as their last argument.
|
|
||||||
|
|
||||||
* `is`: checks truthiness (anything other than `false` or `nil`)
|
|
||||||
* `error`: checks that the given function errors out
|
|
||||||
|
|
||||||
All these assertions take the expected value first, then the actual.
|
|
||||||
|
|
||||||
* `=`: deep equality checks on tables, regular equality otherwise
|
|
||||||
* `not=`: checks the opposite of `=`
|
|
||||||
* `<`: checks that the arguments are in increasing order
|
|
||||||
* `<=`: checks that the arguments are in increasing or equal order
|
|
||||||
* `almost=`: is the actual value within a tolerance of expected?
|
|
||||||
* `identical`: regular `=` equality; checks tables for identity
|
|
||||||
* `match`: checks that the actual string matches an expected pattern
|
|
||||||
* `not-match`: checks the opposite
|
|
||||||
* `error-match`: checks that a function errors out and the error matches an
|
|
||||||
expected pattern
|
|
||||||
|
|
||||||
You can call `skip` in a test to indicate that the test is incomplete
|
|
||||||
without triggering a failure.
|
|
||||||
|
|
||||||
## Developing Faith
|
|
||||||
|
|
||||||
Run `make testall` to run the full suite against all supported Lua
|
|
||||||
versions. Currently the `Makefile` assumes that there is a checkout of
|
|
||||||
Fennel itself in the same directory as your checkout of Faith, but you
|
|
||||||
can override this with, e.g., `make test FENNEL=/usr/local/bin/fennel`.
|
|
||||||
|
|
||||||
Discussion happens on [the Fennel mailing
|
|
||||||
list](https://lists.sr.ht/%7Etechnomancy/fennel) and on the `#fennel`
|
|
||||||
channel on Libera chat and matrix.org.
|
|
||||||
|
|
||||||
## TODO
|
|
||||||
|
|
||||||
* [ ] document hooks
|
|
||||||
* [ ] detailed/colored diffs for failed equality assertions?
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
Faith was based on [lunatest](https://github.com/silentbicycle/lunatest)
|
|
||||||
originally but has evolved significantly since its beginning.
|
|
||||||
|
|
||||||
© 2009-2013 Scott Vokes and contributors
|
|
||||||
© 2023 Phil Hagelberg and contributors
|
|
||||||
|
|
||||||
Released under the [MIT License](LICENSE).
|
|
||||||
Loading…
Reference in New Issue
Block a user