Skip to content

Make a skipped test impossible to write - #44

Merged
estebanzimanyi merged 2 commits into
MobilityDB:mainfrom
estebanzimanyi:ci/no-test-can-be-skipped
Sep 7, 2026
Merged

Make a skipped test impossible to write#44
estebanzimanyi merged 2 commits into
MobilityDB:mainfrom
estebanzimanyi:ci/no-test-can-be-skipped

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

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.

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
estebanzimanyi force-pushed the ci/no-test-can-be-skipped branch from d7d16bf to 6be7e5e Compare September 7, 2026 22:17
@estebanzimanyi
estebanzimanyi merged commit cccb102 into MobilityDB:main Sep 7, 2026
1 check passed
@estebanzimanyi
estebanzimanyi deleted the ci/no-test-can-be-skipped branch September 7, 2026 23:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant