Make a skipped test impossible to write - #44
Merged
estebanzimanyi merged 2 commits intoSep 7, 2026
Conversation
The generated surface is the catalog's projection at MobilityDB 79a66f4576902b933481883443334c67edccf607. `geo_meos_supported` and `geom_meos_supported` leave it and `geo_meos_coverage` and `geom_meos_coverage` take their place, answering an `int` where the pair answered a `bool`: MEOS declares the two names in no header and `libmeos.so` defines neither symbol, so the wrappers naming them resolve nothing at load. The committed snapshot is what a consumer of this repository compiles, and the suite's own `EveryDeclaredEntryPointResolvesInTheLoadedMeos` reads the pair against the loaded library — `MEOS exports none of: geo_meos_supported, geom_meos_supported` is the failure a caller would otherwise meet as an `EntryPointNotFoundException` on the call itself. `GAP-LEDGER.md` follows the same two names into its nullability rows and records the commit it is derived from. The build takes 0 warnings and the suite passes 67 of 67 with none skipped.
`MEOS.NET.Tests/BannedSymbols.txt` names every construct MSTest offers for
stopping a test from asserting — the `[Ignore]` attribute and the three
`Assert.Inconclusive` overloads — and `RS0030` is an error in the test project,
so each one fails the build rather than reaching a reviewer, a log or a count. A
skipped test asserts nothing and reads as a pass in the conclusion, which is why
the construct is refused at the compiler rather than tallied afterwards.
Deleting a test is then the only remaining way to stop running it, and that
leaves no skip behind. What moves is the total, so the workflow reads the run
through `MobilityDB/MEOS-API/.github/actions/check-test-outcome` against a floor
of 67: the same rules every other binding in the ecosystem is held to, from the
one runnable definition, so the CI answer and the answer a developer gets by
hand cannot differ. The run the floor is taken from collects the whole suite —
the snapshot step above it narrows with `--filter` deliberately and no count is
read from that one.
Four refuters, each measured. `[Ignore("refuter")]` on a test takes
`error RS0030: The symbol 'IgnoreAttribute' is banned in this project`, and
`Assert.Inconclusive("refuter")` in a body takes the same error naming
`Assert.Inconclusive(string?)`; both read `Build FAILED`. Against the suite's own
log the guard reads `total=67 skipped=0 floor=67` and passes, while a floor of 68
is refused as a shrinking suite and a log whose summary carries `Skipped: 1` is
refused as a skip. Without all four the pair would be configuration rather than
enforcement.
The suite passes 67 of 67 with none skipped, and the build takes 0 warnings.
estebanzimanyi
force-pushed
the
ci/no-test-can-be-skipped
branch
from
September 7, 2026 22:17
d7d16bf to
6be7e5e
Compare
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.
MEOS.NET.Tests/BannedSymbols.txtnames every construct MSTest offers forstopping a test from asserting — the
[Ignore]attribute and the threeAssert.Inconclusiveoverloads — andRS0030is an error in the test project,so each one fails the build rather than reaching a reviewer, a log or a count. A
skipped test asserts nothing and reads as a pass in the conclusion, which is why
the construct is refused at the compiler rather than tallied afterwards.
Deleting a test is then the only remaining way to stop running it, and that
leaves no skip behind. What moves is the total, so the workflow reads the run
through
MobilityDB/MEOS-API/.github/actions/check-test-outcomeagainst a floorof 67: the same rules every other binding in the ecosystem is held to, from the
one runnable definition, so the CI answer and the answer a developer gets by
hand cannot differ. The run the floor is taken from collects the whole suite —
the snapshot step above it narrows with
--filterdeliberately and no count isread from that one.
Four refuters, each measured.
[Ignore("refuter")]on a test takeserror RS0030: The symbol 'IgnoreAttribute' is banned in this project, andAssert.Inconclusive("refuter")in a body takes the same error namingAssert.Inconclusive(string?); both readBuild FAILED. Against the suite's ownlog the guard reads
total=67 skipped=0 floor=67and passes, while a floor of 68is refused as a shrinking suite and a log whose summary carries
Skipped: 1isrefused as a skip. Without all four the pair would be configuration rather than
enforcement.
The suite passes 67 of 67 with none skipped, and the build takes 0 warnings.