1.9 KiB
1.9 KiB
0032. Run tests, fuzz smoke and docs checks in GitHub Actions
- Status: Accepted
- Area: Testing
- Recorded: 2026-11-03
Context
The suite (unit, property-based, fuzz-corpus replay, in-process fake-server tests) is the primary verification layer for a wallet where a regression can lose funds, but it only ran on a developer's machine. Nothing prevented a failing change, a broken docs index or a Windows-only break from reaching main.
Decision
.github/workflows/ci.yml runs on every push to main and on every pull request, with read-only permissions and cancellation of superseded runs:
- test: restore, build (Release) and
dotnet testoftests/PalladiumWallet.Testsonubuntu-latestandwindows-latest, uploading the TRX and coverage results as artifacts. Only the test project and its references are built, because the Android head needs a workload and SDK that CI does not provision. - fuzz-smoke: one job per parser target, running
--random 20000mutations; any escaping exception fails the job. - docs:
docs/check-docs.sh. - A coverage gate on the Ubuntu test job fails the run if
Coredrops below the thresholds in the workflow (see 0033).
The pipeline is offline: LiveServerTests does nothing without PALLADIUM_TEST_SERVERS, so no third-party indexing server is contacted. Coverage-guided fuzzing (afl++) and release builds stay manual.
Consequences
- A change that breaks tests on either OS, a fuzz contract or the docs checks is visible before merge.
- Release, Android and Docker builds are not exercised by CI yet.
- Action versions are pinned to major tags; moving to commit SHAs would harden the supply chain further.
- Runs consume hosted-runner minutes; the fuzz matrix is the cheapest place to cut if needed.
References
.github/workflows/ci.ymldocs/check-docs.shtests/PalladiumWallet.Fuzz/Program.cs- Related: 0025, 0026, 0027, 0033