group-runner 0.1.3

Group Rust executable output in GitHub logs
# group-runner

Group Rust executable output in GitHub logs

`group-runner` is useful, e.g., when you have lots of integration tests and seeing their output concatenated can be overwhelming.

**Note:** When designing your testsuite, be sure to consider [@matklad]'s excellent blogpost, [Delete Cargo Integration Tests].

## Example `group-runner` output

<img src="etc/screenshot.png">

## Recommended usage with one Cargo command

1. In your GitHub workflow, install `group-runner`:

   ```yaml
   steps:
     - name: Install group-runner
       run: cargo install group-runner
   ```

2. Pass the following option to `cargo run`, `cargo test`, or `cargo bench`:
   ```sh
   --config "target.'cfg(all())'.runner = 'group-runner'"
   ```
   Example:
   ```yaml
   steps:
     - name: Test
       run: cargo test --config "target.'cfg(all())'.runner = 'group-runner'"
   ```
   See [The Cargo Book] for more information.

## Recommended usage with multiple Cargo commands

Like [above], however, we recommend storing the configuration in an environment variable. Example:

```yaml
env:
  GROUP_RUNNER: target.'cfg(all())'.runner = 'group-runner'
steps:
  - name: Test foo
    run: cargo test --package foo --config "$GROUP_RUNNER"
  - name: Test bar
    run: cargo test --package bar --config "$GROUP_RUNNER"
```

## Notes

To avoid mixing build output with test output, we recommend building tests in a separate step prior to running them. Example:

```yaml
steps:
  - name: Build
    run: cargo test --no-run
  - name: Test
    run: cargo test --config "target.'cfg(all())'.runner = 'group-runner'"
```

[@matklad]: https://github.com/matklad
[Delete Cargo Integration Tests]: https://matklad.github.io/2021/02/27/delete-cargo-integration-tests.html
[The Cargo Book]: https://doc.rust-lang.org/cargo/reference/config.html#targettriplerunner
[above]: #recommended-usage-with-one-cargo-command