CodeVetter · Repo Unpack · System map
gotestyourself/gotestsum
The executable is a thin router over the main test-running command and two analysis tools. Test execution crosses a subprocess boundary, while parsing and reporting operate on an in-memory Execution model. Integration centers on terminal output, report files, executable hooks, and filesystem notifications. Build and release definitions describe a portable CLI binary rather than a hosted service.
- main calls route(os.Args), preserves errors implementing ExitCode(), and exits with status 3 for other command errors.
- toolRun dispatches slowest and ci-matrix explicitly; help and ? are handled by both the root router and tool router.
- cmd.Run owns flag parsing, logging setup, build-version reporting, watch dispatch, and ordinary execution.
- The module declares Go 1.24.0 and dependencies for flags, colors, filesystem notifications, shell-like argument splitting, concurrent scanning, and Go package loading.
- testjson exposes ScanTestOutput, ScanConfig, and EventHandler; Execution owns package maps and a separately locked error list.
- cmd's event handler bridges parsed events to terminal formatters and JSON files; final JUnit generation is delegated to internal/junitxml.
- ./do provides binary, binary-static, lint, and golden-update tasks; GitHub Actions builds the executable and uses it to run the repository with race detection.
- GoReleaser builds CGO-disabled binaries for five operating systems and multiple architectures, embeds cmd.version, and defines checksums; CircleCI publishes on matching version tags.