Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mfridman/tparse
CLI tool for summarizing go test output. Pipe friendly. CI/CD friendly.
https://github.com/mfridman/tparse
golang test testing testing-tools
Last synced: 3 days ago
JSON representation
CLI tool for summarizing go test output. Pipe friendly. CI/CD friendly.
- Host: GitHub
- URL: https://github.com/mfridman/tparse
- Owner: mfridman
- License: mit
- Created: 2018-10-18T18:32:47.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2024-11-04T02:28:43.000Z (2 months ago)
- Last Synced: 2025-01-02T07:04:05.501Z (10 days ago)
- Topics: golang, test, testing, testing-tools
- Language: Go
- Homepage:
- Size: 2.06 MB
- Stars: 1,038
- Watchers: 5
- Forks: 23
- Open Issues: 22
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-list - tparse
- awesome-ccamel - mfridman/tparse - CLI tool for summarizing go test output. Pipe friendly. CI/CD friendly. (Go)
README
# tparse [![Actions](https://github.com/mfridman/tparse/workflows/CI/badge.svg)](https://github.com/mfridman/tparse)
A command line tool for analyzing and summarizing `go test` output.
> [!TIP]
>
> Don't forget to run `go test` with the `-json` flag.Pass | Fail
:-------------------------:|:-------------------------:
|By default, `tparse` will always return test failures and panics, if any, followed by a package-level summary table.
To get additional info on passed tests run `tparse` with `-pass` flag. Tests are grouped by package and sorted by elapsed time in descending order (longest to shortest).
### [But why?!](#but-why) for more info.
## Installation
go install github.com/mfridman/tparse@latest
Or download the latest pre-built binary [here](https://github.com/mfridman/tparse/releases/latest).
## Usage
Once `tparse` is installed there are 2 ways to use it:
1. Run `go test` as normal, but add `-json` flag and pipe output to `tparse`.
```
set -o pipefail && go test fmt -json | tparse -all
```2. Save the output of `go test` with `-json` flag into a file and call `tparse` with `-file` option.
```
go test fmt -json > fmt.out
tparse -all -file=fmt.out
```Tip: run `tparse -h` to get usage and options.
## But why?!
`go test` is awesome, but verbose. Sometimes you just want readily available failures, grouped by package, printed with a dash of color.
`tparse` attempts to do just that; return failed tests and panics, if any, followed by a single package-level summary. No more searching for the literal string: "--- FAIL".
But, let's take it a bit further. With `-all` (`-pass` and `-skip` combined) you can get additional info, such as skipped tests and elapsed time of each passed test.
`tparse` comes with a `-follow` flag to print raw output. Yep, go test pipes JSON, it's parsed and the output is printed back out as if you ran go test without `-json` flag. Eliminating the need for `tee /dev/tty` between pipes.
The default print order is:
- `go test` output (if adding `-follow` flag)
- passed/skipped table (if adding `-all`, `-skip` or `-pass` flag)
- failed tests and panics
- summaryFor narrow displays the `-smallscreen` flag may be useful, dividing a long test name and making it vertical heavy:
```
TestSubtests/an_awesome_but_long/subtest_for_the/winTestSubtests
/an_awesome_but_long
/subtest_for_the
/win
````tparse` aims to be a simple alternative to one-liner bash functions.