Repository navigation
fix: oracles seeds credits a seed only against a passing baseline - #158
Merged
Merged
Conversation
`oracles seeds` read any failed test as a catch, so a SQL Server fixture that never started (2022 under QEMU on an arm64 Mac) credited both SQL Server seeds while every test failed in `SqlServer.InitializeAsync`, and the tool exited 0. The tool now runs every oracle the selected seeds name on a copy with no seed first, built and filtered as the seeded runs are. A seed is CAUGHT only when its oracle passes there and fails with the seed in a test of its own. A run that never reached the tests is ERROR, exit 4, with or without the seed. The TRX decides that, as measured with xunit.v3 4.0.2: - a fixture that fails to set up fails each test with one of xunit's own messages; - a fixture that fails in Dispose is only an `error` counter; - a crashed host writes no TRX and exits other than 0 or 2; - a run whose every test is skipped ran nothing. A failing baseline is ERROR too. Decision 118 records the rule, and the README, CONTRIBUTING and AGENTS say what ERROR means at release. Input class: the ways a run fails outside a test's own code. SeedVerdictTests covers each kind measured above and every setup message xunit.v3.core 4.0.2 holds. With the setup check and the baseline seeded out, three of those tests fail, the dead fixture of #151 among them. Closes #151. Defect-Class: TOOL Found-By: OR Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Closes #151
Problem
oracles seedscounted any failed test as a catch and never checked that the oracle passes without the seed. On an arm64 Mac, SQL Server 2022 under QEMU never starts, soSqlServer.InitializeAsyncthrowsContainerNotRunningExceptionand every test of both SQL Server oracles fails. The tool still reported both seedsCAUGHT(10,071 of 10,071 and 170 of 170) and exited 0 withevery seed is caught.Change
test/oracles/SeedVerdict.cs, linked into the tool and its tests:Read(exitCode, trx, oracle)turns one run into aRun.IsSetupFailurerecognises xunit's own setup messages.Judge(baseline, seeded)gives the verdict.tools/Oracles/Program.cs:BASELINEline per oracle.ERROR.ERRORexits 4, so it can be told apart from a missed seed (exit 1).How a setup failure is told apart, measured on xunit.v3 4.0.2 with Microsoft Testing Platform:
Collection fixture type 'T' threw in InitializeAsync). xunit.v3.core 4.0.2 holds four more setup messages, and all are matched.errorcounter in the TRX, with no failed result.A failure in a test class's own constructor or
InitializeAsyncreads like one in the test body, so it counts as the test's own.design/adr/0117: the rule, its measurement, and what was rejected. It restores for the oracle kit the baseline that decision 108 had given the prober. Decision 112's port had dropped it.test/oracles/README.mdhas a verdict table. CONTRIBUTING's and AGENTS' release steps now say whatERRORmeans and that an arm64 Mac needsTYPEKIT_MSSQL_IMAGE.Tests
SeedVerdictTestsgains tests on TRX documents shaped like the measured ones:errorcounter, a host that exits 134, 7 or 3, and a run where every test was skipped.DesignRecordTestspass, 120 of 120.oracles seedson this arm64 Mac, at this branch:SQL Server 2022 (no
TYPEKIT_MSSQL_IMAGE): exit 4, 2 min 22 sTYPEKIT_MSSQL_IMAGE=mcr.microsoft.com/azure-sql-edge:latest: exit 0, 5 min 36 s. All 8 baselines pass.The executed counts under Edge (9621, 167) are lower than 2022's because the tests that need 2022-only functions skip on Edge.
🤖 Generated with Claude Code