Skip to content

Retire referencePending: gocsvj enforces §1 rules#4

Open
peo-machine wants to merge 1 commit into
masterfrom
retire-reference-pending
Open

Retire referencePending: gocsvj enforces §1 rules#4
peo-machine wants to merge 1 commit into
masterfrom
retire-reference-pending

Conversation

@peo-machine
Copy link
Copy Markdown
Contributor

Summary

gocsvj#12 (merged) shipped strict §1 structural-rule enforcement in the reference Go implementation. The six skip-list entries in conformance_test.go's referencePending map can now retire:

Vector Spec rule gocsvj behavior
05-empty-header-line (accept) §1 rule 1: single \n is the minimum valid file now accepts
05-missing-trailing-newline (reject) §1 rule 2: trailing newline required now rejects
06-ragged-row-short (reject) §1 rule 3: every row matches header width now rejects
07-ragged-row-long (reject) §1 rule 3 now rejects
08-duplicate-header-names (reject) §1 rule 4: header names pairwise distinct now rejects
09-duplicate-empty-header (reject) §1 rule 4 now rejects

Changes

  • Bumps gocsvj pin in go.mod to master (post-#12 — v0.0.0-20260526150927-654752620b64).
  • Removes the referencePending map and its two skip clauses from conformance_test.go.
  • Removes the "Reference impl pending list" subsection from README.md — no entries left to document.

After this PR, the Go runner exercises every vector against gocsvj with no skips, matching what other-language implementers are already expected to do.

Verified locally

$ go test -v ./...
=== RUN   TestInputs
    --- PASS: TestInputs/01-simple-strings  …  07-trailing-empty-string  (7/7)
=== RUN   TestMustReject
    --- PASS: TestMustReject/01-empty-file  …  18-unescaped-control-char (18/18)
PASS
ok      github.com/csvj-org/conformance

Test plan

  • CI green on the PR (the conformance workflow itself runs go test ./...).
  • After merge: gocsvj's downstream conformance CI step (added in gocsvj#11) continues to pass on subsequent gocsvj PRs without skips.

🤖 Generated with Claude Code

gocsvj#12 (reader: enforce strict §1 structural rules) shipped the
six behaviors the conformance runner was skipping for the reference
implementation: single-`\n` accept, missing-trailing-newline reject,
ragged-row short/long reject, duplicate-header-names reject,
duplicate-empty-header reject.

Bumps the gocsvj pin to master (post-#12), drops the
`referencePending` map and the two skip clauses in
`conformance_test.go`, and removes the corresponding §"Reference impl
pending list" subsection from README.md. All 7 input vectors and 18
must-reject vectors now pass against gocsvj@master without skips.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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