# 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 ``` bun install -g @because/shout ``` ## 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 ............... 15 passed in 23ms ``` `shout` 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 [options] [files...] shell output tester. 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 --bin Prepend to PATH --timeout Per-command timeout (default: "10s") -v, --verbose Print each command as it runs --parallel Run files in parallel -h, --help display help for command ```