ci: run the adapter tests and fuzz campaigns on every push #55

Open
james.maes wants to merge 2 commits from ci/gate-adapters-and-commits into main
pull from: ci/gate-adapters-and-commits
Owner

Closes #54

What changes

  • Gitea build: runs the Windows adapter tests (the UiTests assembly minus the new Desktop category) and the seeded fuzz campaigns (500 iterations on topic branches, 10000 on main and tags). Clears TestResults first because the host runner keeps its workspace. Drops secrets: inherit; the shared workflow uses the job token.
  • Coverage gate: a package with no measured lines fails; the gate names the report it used and lists only that report's uncovered lines. Pester tests cover each rule.
  • Core lock: removes EnableSingleFileAnalyzer, which locked the SDK linker package for a command-line head this repository does not have.
  • Docs: CLAUDE.md, DEVELOPERS.md and CONTRIBUTING.md give the commands CI runs and say which checks have no automated run while the GitHub mirror has Actions switched off. RELEASING.md states that a tag currently publishes nothing.
  • Test hygiene: the shared temp folder and the test registry parent key are removed when the last test using them is done.

Checks run

  • All local gates: locked restore, zero-warning build, format, 677 core tests at 100% line coverage, 30 adapter tests, fuzz at 500, script analyzer, Pester, eslint, node tests.
  • Locked self-contained dotnet publish of the app and of the update probe after the lock change: both restore and publish.

Not run

  • The Desktop tests and installed-update acceptance.

AI assistance: written with Claude Fable 5.2.

🤖 Generated with Claude Code

Closes #54 ## What changes - **Gitea build**: runs the Windows adapter tests (the UiTests assembly minus the new `Desktop` category) and the seeded fuzz campaigns (500 iterations on topic branches, 10000 on `main` and tags). Clears `TestResults` first because the host runner keeps its workspace. Drops `secrets: inherit`; the shared workflow uses the job token. - **Coverage gate**: a package with no measured lines fails; the gate names the report it used and lists only that report's uncovered lines. Pester tests cover each rule. - **Core lock**: removes `EnableSingleFileAnalyzer`, which locked the SDK linker package for a command-line head this repository does not have. - **Docs**: CLAUDE.md, DEVELOPERS.md and CONTRIBUTING.md give the commands CI runs and say which checks have no automated run while the GitHub mirror has Actions switched off. RELEASING.md states that a tag currently publishes nothing. - **Test hygiene**: the shared temp folder and the test registry parent key are removed when the last test using them is done. ## Checks run - All local gates: locked restore, zero-warning build, format, 677 core tests at 100% line coverage, 30 adapter tests, fuzz at 500, script analyzer, Pester, eslint, node tests. - Locked self-contained `dotnet publish` of the app and of the update probe after the lock change: both restore and publish. ## Not run - The `Desktop` tests and installed-update acceptance. AI assistance: written with Claude Fable 5.2. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
james.maes added 1 commit 2026-11-11 00:15:59 +00:00
ci: run the adapter tests and fuzz campaigns on every push
node / node (push) Successful in 19s
build / scripts (push) Successful in 19s
windows / windows (push) Successful in 3m11s
build / windows (push) Successful in 3m12s
24d5d13fc4
The Gitea build now runs the Windows adapter tests (everything in the
UiTests assembly outside the new Desktop category) and the seeded
parser campaigns: 500 iterations on topic branches, 10000 on main and
tags. It clears the results directory first, because the host runner
keeps its workspace, and no longer passes secrets it does not use.

The coverage gate rejects a package with no measured lines, names the
report it used, and lists only that report's uncovered lines.

The core project no longer locks the SDK linker package: no project
publishes as a single file, and the entry broke locked restore
whenever the SDK patch level moved. Locked self-contained publishing
of the app and the update probe still restores.

Developer docs give the commands CI runs, say which checks have no
automated run while the GitHub mirror has Actions switched off, and
state that a tag currently publishes nothing. Test temp folders and
the test registry parent key are removed when the last test is done.

Closes #54

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
james.maes added 1 commit 2026-11-11 01:04:01 +00:00
ci: count coverage from the lines and fail a fuzz filter that matches nothing
node / node (push) Successful in 20s
build / scripts (push) Successful in 19s
windows / windows (push) Successful in 2m2s
build / windows (push) Successful in 2m2s
1b47a0a07a
The coverage gate now counts covered lines itself instead of reading
the report's summary rate, matches package names exactly, and shows
the percentage rounded down. Its tests cover reports whose stated rate
disagrees with their lines, several packages, and several reports.

The long fuzz campaigns run only on main and tags, where they differ
from what the ordinary test run already did, decide that from the ref,
print the iteration count, and fail when their filter matches no test.

Test helpers no longer remove the temp folder and registry key that
all test processes share: a second process could be creating its own
entry there at that moment.

AGENTS.md, the fuzzing assessment and the installed-update guide
describe what runs today.

Refs #54

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
All checks were successful
node / node (push) Successful in 20s
build / scripts (push) Successful in 19s
windows / windows (push) Successful in 2m2s
build / windows (push) Successful in 2m2s
This pull request has changes conflicting with the target branch.
  • src/MarkdownViewr.Windows.Core/MarkdownViewr.Windows.Core.csproj
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin ci/gate-adapters-and-commits:ci/gate-adapters-and-commits
git checkout ci/gate-adapters-and-commits
Sign in to join this conversation.