shout/README.md

66 lines
1.3 KiB
Markdown

# 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
--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
```