Artifact 1e7355b067a922a2c8b482c7c2f98e98266c7c763117741a437a7cb9c1677e6f:
- File
conformance/artifact_gaps_test.go
— part of check-in
[8cc3d7c5e4]
at
2026-10-13 02:23:50
on branch test/conformance-01-drafts
— test(conformance): check the -01 drafts of artifact, repo-state and sync
Re-pin the conformance suite to draft-fossil-artifact-format-01, draft-fossil-repo-state-01 and draft-fossil-sync-protocol-01, copied byte for byte from zit check-in 100351e26c. The delta format has no -01 and stays on -00. The -00 errata are folded into -01 and are no longer pinned; the six -01 errata are pinned for the fossil 2.28 behavior they record. conformance/rfcs/README.md records where each copy came from.
The requirement tables are re-read against -01, and new cases cover the date tag's event time (repo-state ยง4.2 step 6), the Julian-day grammar, a delta manifest naming a delta, dropped reserved F cards, the trailing-punctuation retry, truncated payloads, errors N, a file card after a refused push, the end of a request after a failed login, and the answer to a gimme for private content.
No library behavior changes. Where -01 departs from fossil 2.28 and go-libfossil follows fossil (a cancelled, unparsable or 0 date tag), the cases are marked as deviations. The non-conformances the re-pin exposes are marked as gaps, tracked in #370, #371, #372, #373, #374 and #375. (user: [email protected], size: 1513) [annotate] [blame] [check-ins using] [more...]
package conformance import "testing" // artifactGaps marks the artifact cases go-libfossil is known to fail, by // case ID, grouped by the code at fault, each with the issue tracking its fix. var artifactGaps = map[string]string{ // deck.Parse reads a Julian day number as digits with an optional // fraction only; Section 4.6.4 form 5 also allows a sign, a leading or // trailing point and an exponent, as fossil(1) does. "artifact.4.6.4.julian-plus-sign": "#370", "artifact.4.6.4.julian-exponent": "#370", "artifact.4.6.4.julian-exponent-upper": "#370", "artifact.4.6.4.julian-leading-point": "#370", "artifact.4.6.4.julian-trailing-point": "#370", // manifest.ListFiles refuses a baseline that is itself a delta manifest // (#275); Section 4.7.3 of the -01 draft has a reader accept it and // resolve the file set one level, as fossil(1) does. "artifact.4.7.3.delta-of-delta-one-level": "#371", } // TestArtifactGapKeys checks that every marked case exists, and that every // loss the fuzz test forgives is still a marked gap. func TestArtifactGapKeys(t *testing.T) { ids := map[string]bool{} for _, c := range artifactSuiteCases() { ids[c.ID] = true } for id := range artifactGaps { if !ids[id] { t.Errorf("artifactGaps names %s, which is not a case", id) } } for _, loss := range knownLosses { if artifactGaps[loss.caseID] == "" { t.Errorf("FuzzArtifactRoundTrip forgives %s, which is no longer a gap; "+ "remove it from knownLosses", loss.caseID) } } }