assets/chezmoi.io/docs/developer-guide/testing.md
chezmoi uses multiple levels of testing:
Unit testing, using testing, and
github.com/alecthomas/assert/v2, tests that functions and small
components behave as expected for a wide range of inputs, especially edge
cases. These are generally found in internal/chezmoi/*_test.go.
File system integration tests, using testing and
github.com/twpayne/go-vfs/v5, test chezmoi's effects on the file
system. This include some tests in internal/chezmoi/*_test.go, and higher
level command tests in internal/cmd/*cmd_test.go.
High-level integration tests using
github.com/rogpeppe/go-internal/testscript are in
internal/cmd/testdata/scripts/*.txtar and are run by
internal/cmd/main_test.go.
Linux distribution and OS tests run the full test suite using Docker for
different Linux distributions (in assets/docker) and Vagrant for different
OSes (in assets/vagrant). Windows tests are run in GitHub Actions.