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.
-
In your GitHub workflow, install
group-runner
:steps: - name: Install group-runner run: cargo install group-runner
-
Pass the following option to
cargo run
,cargo test
, orcargo bench
:--config "target.'cfg(all())'.runner = 'group-runner'"
Example:
steps: - name: Test run: cargo test --config "target.'cfg(all())'.runner = 'group-runner'"
See The Cargo Book for more information.
Like above, however, we recommend storing the configuration in an environment variable. Example:
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"
To avoid mixing build output with test output, we recommend building tests in a separate step prior to running them. Example:
steps:
- name: Build
run: cargo test --no-run
- name: Test
run: cargo test --config "target.'cfg(all())'.runner = 'group-runner'"