# Tenzir Test v1.7.1

This release adds parallel suite execution and fixes several bugs, including clean Ctrl+C handling, consistent default fixture options, and reliable shell runner defaults for .sh test files.

## 🚀 Features

### Parallel suite execution

Feb 24, 2026 · [@mavam](https://github.com/mavam), [@codex](https://github.com/codex) · [#29](https://github.com/tenzir/test/pull/29)

Test suites can now execute their members in parallel by specifying `mode: parallel` in the suite configuration. By default, suites continue to run tests sequentially for stability and predictability.

To enable parallel execution, set `mode: parallel` in the `test.yaml` file alongside the `suite` configuration:

```yaml
suite:
  name: my-suite
  mode: parallel
fixtures:
  - node
```

Parallel suite execution is useful when tests within a suite are independent and can safely run concurrently. All suite members share the same fixtures and execute within the same fixture lifecycle, while test execution itself happens on separate threads. The suite thread pool is bounded by `--jobs`, so suite-level concurrency stays within the configured worker budget and does not scale unbounded with suite size.

Suite-level constraints like timeouts, fixture requirements, and capability checks still apply uniformly across all members, whether running sequentially or in parallel.

## 🐞 Bug Fixes

### Avoid Python backtraces on Ctrl+C interrupts

Feb 25, 2026 · [@mavam](https://github.com/mavam), [@codex](https://github.com/codex) · [#31](https://github.com/tenzir/test/pull/31)

Interrupting test runs with Ctrl+C now exits cleanly without leaking Python tracebacks from subprocess or fixture startup/teardown paths. Interrupt-shaped errors (including nested causes with signal-style return codes such as 130) are treated as graceful cancellation so the CLI reports interrupted tests instead of crashing.

### Shell test files default to shell runner

Feb 24, 2026 · [@mavam](https://github.com/mavam), [@codex](https://github.com/codex) · [#30](https://github.com/tenzir/test/pull/30)

Shell test files (`.sh`) now always default to the “shell” runner, even when a directory-level `test.yaml` file specifies a different runner (for example, `runner: tenzir`). This makes shell scripts work reliably in mixed-runner directories without requiring explicit `runner:` frontmatter in each file. Explicit `runner:` declarations in test file frontmatter still take precedence and can override this behavior if needed.

### Fix default fixture options in manual fixture control

Feb 24, 2026 · [@mavam](https://github.com/mavam), [@codex](https://github.com/codex)

Manual fixture control now behaves consistently for fixtures that declare dataclass options.

Previously, starting a fixture with `acquire_fixture(...)` could fail when no explicit options were provided, even if the fixture defined defaults.

With this fix, `current_options(...)` returns default typed options in the manual fixture-control path, so fixtures started manually and fixtures started through normal test activation behave the same way.

[ Download on GitHub ](https://github.com/tenzir/test/releases/tag/v1.7.1)

[Get the release artifacts and source code.](https://github.com/tenzir/test/releases/tag/v1.7.1)