Build juliati on TestItemRuns.jl (+ Esc/Ctrl-C cancellation) - #5
Merged
Conversation
The discovery/execution engine moves to TestItemRuns.jl; TestItemApp keeps the CLI, the console rendering (ConsoleReporter over the TestItemRuns event stream), result files and exit codes. Pressing Esc/q or Ctrl-C during a run cancels it cleanly (exit code 130), still writing the partial results. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
davidanthoff
force-pushed
the
testitemruns
branch
from
August 22, 2026 18:14
21dc56f to
37da084
Compare
davidanthoff
marked this pull request as ready for review
August 22, 2026 18:15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of the TestItemRuns migration. Needs TestItemRuns 1.1.0, which is registered.
src/engine.jl(634 lines of discovery, controller wiring, result assembly and console reporting) is deleted. What replaces it:src/run.jl— a thin front end overTestItemRuns.run_tests, keeping the legacy NamedTuplefiltercontract and theprogress_ui/output_mode/streamreporting options.src/console.jl—ConsoleReporter, an event sink doing the progress bar,:loglines, output echo, summary and failure printing.src/keys.jl— new: raw-mode stdin, Esc/q/Ctrl-C cancellation,CANCEL_EXIT_CODE = 130.juliatiruns once and exits, so it builds and closes its ownTestSessionrather than sharing the process-wide default one.JuliaWorkspacesandTestItemControllersare dropped from[deps]entirely — everything now comes through TestItemRuns' re-exports.Net −663/+503 lines.
The one thing worth a close look
A
--failfastrun is cancelled underneath, andjuliatimaps a cancelled run to exit 130. Reporting a plain test failure as "the user interrupted this" would be a silent CI regression. TestItemRuns 1.1 reports a failfast run as:completedwithstop_reason(run) === :failfast, so the existing cancellation check is already correct — and there is now a test pinningjuliati --failfastto exit 1, not 130.Rebased onto the four features that landed while this branch waited
All of them lived in the deleted
engine.jl, so they are re-expressed as TestItemRuns kwargs rather than replayed:--failfast,--log-level,--activation-timeout, and thesrc/extcoverage roots (now the TestItemRuns default, so nothing to wire). Three things this branch had dropped are restored:write_lcov(...; root=abspath(opts.path)), the skipped-item exemption in the exit code, and the append-rather-than-assignJULIA_DEBUGsemantics behind--debug.test/test_engine.jl→test/test_run.jl; it no longer tests an engine.Verification
Pkg.test()green against the registered TestItemRuns 1.1.0: 226/226.juliatismoke-tested end to end against the fixtures:--failfastexits 1 with one failure and the rest skipped;--log-level debugsurfaces the package's own@debug;--coverage --coverage-lcovwritesSF:src/AppTestPkg.jl— repo-relative, notest/files;--activation-timeout 0.001errors the items instead of hanging;--timeout noneruns.🤖 Generated with Claude Code