shout in go
| test | ||
| .gitignore | ||
| cmd.go | ||
| color.go | ||
| format.go | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| Makefile | ||
| match_test.go | ||
| match.go | ||
| parse_test.go | ||
| parse.go | ||
| README.md | ||
| run.go | ||
| types.go | ||
| update.go | ||
shout
shout is kinda like really basic integration testing for your cli.
Write .shout files that look like shell sessions and run shout to test 'em.
Install
git clone https://git.nose.space/defunkt/go-shout
cd go-shout
make install
Features
Everything you could ever ask for:
$ echo hello
hello
$ brew --version
Homebrew 5...
$ ls missing
ls: missing: No such file or directory
[1]
... matches anything — a whole line inline, or any number of lines on its own.
[1] after the expected output matches the exit code.
Usage
$ shout test
...............
15 passed in 23ms
shout test runs code in a temp directory. -k/--keep keeps it around.
--update will modify .shout files to match reality, without running any tests.
Each line in a .shout file is run sequentially, unless --parallel is passed.
Usage: shout test [options] [files...]
Run .shout test files
Arguments:
files Files or directories to test
Options:
-u, --update Rewrite expected output in-place with actual output
-k, --keep Keep temp directories after run
--clean-env Start with empty environment
--path <path> Prepend <path> to PATH (repeatable)
--timeout <dur> Per-command timeout (default: "10s")
-v, --verbose Print each command as it runs
--parallel Run files in parallel
-h, --help display help for command
Print an example .shout file:
$ shout example