Description
Capture stdout/stderr/exit code, and replace stdin of your main function.
Description
See README.md for detail.
README.md
main-tester
Capture stdout/stderr/exit code, and replace stdin of your main function.
Why?
Against the best practice, I often prefer large, end-to-end (E2E) tests.
Because:
- E2E tests can directly test your users' requirement.
- E2E tests can detect bugs caused by misassumption of external components
- Which happenes relatively more often than the others, according to my experience.
- I often write small programs where E2E tests are sufficient.
This library main-tester provides utility functions for E2E testing of your CLI applications.
With main-tester, You can test your apps with arbitrary stdin data, check their output and exit code.
Comparison with silently and System.IO.Fake
- Can test exit code of your main.
- All input and outputs are strict bytestrings except the command line arguments, which is very important when testing with non-UTF8 input and output.
- Currently doesn't support suppressing stdout and stderr (Pull request welcome!).