nixos/.claude/test-runner.md

35 lines
1.3 KiB
Markdown

# Test Runner Instructions
## Determine affected hosts
Run `git diff --name-only HEAD` (or `git diff --name-only` for unstaged changes) to find changed files.
### Scope rules
- If changes are **only** under `hosts/<name>/`, test only that specific host:
```bash
./scripts/test-configuration <name>
```
- If changes touch `utils/`, root-level `.nix` files, or any shared configuration, test **all** hosts:
```bash
for host in amzebs-01 fw mail nas nb web-arm; do
./scripts/test-configuration "$host"
done
```
### Custom package changes
If any files under `utils/pkgs/<package-name>/` were modified, also build the package directly:
```bash
nix-build -E 'with import <nixpkgs> { overlays = [ (import ./utils/overlays/packages.nix) ]; config.allowUnfree = true; }; <package-name>'
```
This catches build failures that `test-configuration` (evaluation-only) would miss.
## Notes
- Each `test-configuration` run performs a `nix-instantiate` dry-build (evaluation only, no binary builds).
- A non-zero exit code from any host means the test failed.
- Testable hosts: `amzebs-01`, `fw`, `mail`, `nas`, `nb`, `web-arm`.
- `dev` is not independently testable (no `hardware-configuration.nix`); it is deployed as a MicroVM via the `fw` host, so testing `fw` covers `dev`.