BAT is a simplistic [blackbox testing][bbt] tool. BAT is:
BAT is a simplistic [blackbox testing][bbt] tool. BAT is:
* stream-based (TCP, WebSocket or local pipes, no HTTP),
* line-based (like classic internet/Unix protocols, no JSON, no XML),
* implementation-agnostic (just i/o, no API calls).
BAT feeds the prescribed input into a stream, then listens to the
output and compares it to the expected value.
The test script format is extremely simple:
; comment BAT's predecessors have been extremely useful in testing network servers ; client 1 says hi, server responds Blackbox testing is particularly handy when you test protocol compliance [bbt]: https://en.wikipedia.org/wiki/Black-box_testing
>input
in concurrent input/output scenarios. Then, the testing tool pretends to
be several clients:
client1> Hello
client1< Hi Joe
; client 2 joins
client2> Hello
client2< Hi Mike
of several implementations: their APIs differ, but tests are the same.Usage
- [x] bat -e command simple_script.batt
- [x] bat -c host:port multistream_script.batt
- [x] bat -l 127.0.0.1:12345 server_script.batt
- [ ] bat -e new_version -r new_script.batt old_script.batt
see test/ for examples of API and
CLI usage, .batt scripts.
- [x] -e test an executable (stdin/stdout)
- [ ] -r record de-facto output to a new test script
- [x] -i don't stop on errors, just log them
- [x] -v comment on every step
- [ ] -L ignore empty lines
- [x] -C ignore case
- [x] -d max delay (let'em think); default 500ms
- [x] -O output lines may go in any order
- [x] --whitespace collapse|ignore|exact|count
- [ ] 0 OK
- [ ] 1 no match
- [ ] 2 script error
- [ ] 3 argument error
- [ ] 4 io error
C version for billion-line tests