Repository navigation
Vendors the uxid conformance corpus and runs every case - #8
Merged
Merged
Conversation
The corpus is the arbiter of conformance, so the port now carries it and the gate runs it. conformance/ holds the uxid-ex corpus at v2.10.0 (the case files, manifest.json, the schemas and README.md, byte for byte; the generator sources are not copied), with SOURCE.json recording the repo, tag, commit and corpus hash. .gitattributes keeps its line endings as committed. CorpusHashTest recomputes the corpus hash and each case count by the corpus README's rule and fails on a mismatch. CorpusRunnerTest runs one parameterised test per case file over every case, with no skip list. A case is read strictly: a key the runner does not know, or a missing one, fails it, and a null prefix reads as no prefix. The JSON reader is a small one in the test sources, so the library and the pom gain no dependency. The hand-copied corpus rows in the four earlier corpus test classes are removed: the runner covers exactly the same cases, including the decode refusals, generate refusals and monotonic refusals they held. The targeted tests that pin behaviour the corpus does not stay. Refs: uxjv-baj
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.
What
Vendors the uxid-ex conformance corpus at the
v2.10.0tag and runs every case under the gate. Bead: uxjv-baj.conformance/holds the case files (encode.json,deterministic.json,decode.json,invalid.json,monotonic.json),manifest.json,README.mdandschema/, each copied byte for byte from the tag. The reference'ssource/generator scripts are not copied, as in the released ports.conformance/SOURCE.jsonrecords the repo, the tag, the commit and the corpus hash..gitattributesmarksconformance/**as-textso no line-ending conversion touches the vendored bytes. Spotless is configured for Java sources only and does not readconformance/.CorpusHashTestrecomputes the corpus hash by the corpus README's rule (the case files' bytes concatenated in the manifest's order) and eachcase_count(the lines of its file), and fails on a mismatch. It also checks thatSOURCE.jsonand the manifest agree, that the manifest lists exactly the files the runner runs, and that the case files carry no carriage return.CorpusRunnerTestis one parameterised test per case file (encode, deterministic, decode, invalid, monotonic), one invocation per line, named by the case id, with no skip list. Decode cases run at both ends of the decoder clock window the corpus README gives; monotonic cases replay their draws throughDrawSource.Fields): a key the runner does not know fails it, a missing key fails it, and anullprefix reads as no prefix.CorpusStrictnessTestpins those rules with synthetic lines, and a wrong answer fails rather than being skipped.DecodeCorpusTest,DeterministicCorpusTest,GenerateCorpusTest,MonotonicCorpusTest) are removed: the runner covers exactly the same cases, including the decode, generate and monotonic refusals they held. The targeted tests that pin behaviour the corpus does not (DecodeClockTest,MonotonicTest,UxidDecodeTest,UxidDeterministicTest,UxidGenerateTest,UxidValidityTestand the rest) stay.CLAUDE.mdnow states that the corpus is vendored (it described it as arriving later).No library source changes and no public API changes. No changelog fragment: tests, tooling and docs take none.
Provenance
Json,Fields) rather than a test-scope dependency, sopom.xmlis unchanged and the jar stays dependency-free. It refuses duplicate keys, non-integer numbers and trailing text. Decided by the conductor under a standing consent, 2026-10-21.Verification
mise run gategreen on the committed tree: format check, compile with Error Prone, the tests (the corpus tests included), JaCoCo at the 90 percent bar, and the jars.