Repository navigation
test(conformance): strengthen weak assertions and add xerial control run - #71
Merged
Merged
Conversation
magnusp
force-pushed
the
feat/51-conformance-test-integrity
branch
from
October 21, 2026 22:57
6ed0a13 to
8bc4120
Compare
magnusp
force-pushed
the
feat/51-conformance-test-integrity
branch
from
October 21, 2026 23:01
8bc4120 to
54dcbf2
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.
Closes #51.
What changed
InsertQueryTestnow obtains one transaction connection and runs the DDL, DML, rollback, and commit through it. It asserts rollback hides the rows and commit persists exactly 10 rows. The independent-connection variant therefore exercises a real transaction across connections.CachedRowSetTestasserts the cached row it reads: id 1, nameleo, and end of cursor.PreparedStatementThreadTestrethrowsAssertionErrorunwrapped fromExecutionException, so an assertion failure in a worker thread fails the test.TypeMapTestis removed. libSQL accepts but ignores type maps (TypeMap, fetch size, and holdability are silently accepted no-ops #48 is open), so a parity assertion is red and an assertion of the no-op would be weak. The manifest records the reason.upstream-xerial_sqlite-jdbc.manifestnow records a per-class rationale for every selected and rejected class in the pinned 3.53.4.0 tree (10 selected files, includingUtils.java; 29 rejected classes, includingTypeMapTest).xerial-controlMaven profile (./mvnw -pl libsql-conformance -am verify -Pxerial-control). It compiles the same manifest and runs the vendored tests againstorg.xerial:sqlite-jdbc:3.53.4.0.XerialControlderegisters visible drivers, registers the pinned xerial driver, and verifies thatjdbc:sqlite::memory:resolves toorg.sqlite.JDBC, so the control cannot silently use the libSQL driver.CHECKSUMS.sha256records the current hashes for the three edited vendored tests; the manifest records each divergence and reason using the mechanism from Vendoring checksums and manifest are not enforced #53.Contract decision
Parity with xerial 3.53.4.0 is the default. No production code changed. The vendored edits harden assertions and connection use; they do not change asserted behavior. The xerial control profile makes the same manifest runnable against the pinned upstream jar and is the parity baseline #54 needs.
TypeMapTestis removed rather than strengthened because libSQL type maps are a documented no-op (#48) and the Hrana transport cannot satisfy the JDBC type-map contract until that issue lands.Evidence
Commands and results (from the worktree at the head SHA):
Failing-before / passing-after evidence used temporary mutations, restored before the commit:
insert-old-count: Tests run 3, Failures 0, BUILD SUCCESSinsert-new-count: Tests run 3, Failures 2,expected: <10> but was: <5>mickey, assertleocached-old-content: Tests run 1, Failures 0, BUILD SUCCESScached-new-content: Tests run 1, Failures 1,expected: "leo" but was: "mickey"getInt(j) == j + 1thread-old-assertion: Tests run 2, Failures 0, BUILD SUCCESSthread-new-assertion: Tests run 2, Failures 1insertLockTestUsingIndependentConnectionfails:rollback must discard the inserted rows ==> expected: <0> but was: <10>The last row shows the independent-connection variant now fails when statements do not use the transaction connection.
Deviations
TypeMapTestis removed from the selection; reason is TypeMap, fetch size, and holdability are silently accepted no-ops #48 above.InsertQueryTestandPreparedStatementThreadTestdiverge for assertion quality, not transport behavior;CachedRowSetTestkeeps its existing namespace-closing divergence and adds row assertions.Out-of-scope notes
upstream-xerial_sqlite-jdbc/UPSTREAM.mdstill listsTypeMapTest.javain its generatedPathsrow;export-upstreamregenerates that row only on export, and the file is outside this lane's ownership.