Skip to content

SQLite tests: clean up TestRecover commands#933

Closed
brandonpayton wants to merge 1 commit into
followup/sqlite-utf16-analyze9from
followup/sqlite-recover-tcl-lifetime
Closed

SQLite tests: clean up TestRecover commands#933
brandonpayton wants to merge 1 commit into
followup/sqlite-utf16-analyze9from
followup/sqlite-recover-tcl-lifetime

Conversation

@brandonpayton

Copy link
Copy Markdown
Member

What this does

#907 already landed PHP support, ABI 39, and the shared runtime, VFS, process,
networking, package, and Vitest fixes found while bringing PHP up. This PR does
not replay any of that work.

The unique work here fixes the upstream SQLite testfixture's TestRecover Tcl
binding. A generated recovery command now owns its sqlite3_recover handle,
cleans it up when the command is deleted or the interpreter exits, and still
deletes the right command after a Tcl rename. A focused upstream-style test
covers finish, deletion, rename, and repeated direct/SQL-callback lifecycles.

This is stacked on #932 so the SQLite test patches have one clear order. The
new patch is testfixture-only and is deliberately kept out of
build-sqlite.sh.

What was removed

  • No Fix mmap accounting under partial munmap churn #769 runtime, mmap, stat, lock-table, credentials, or test-runner changes
    are included.
  • No SQLite no_mutex workaround or broad pager-fault omission is included.
  • No package revision bump is included because the declared SQLite library,
    headers, and pkg-config outputs do not change.

ABI and package impact

There is no kernel, host-runtime, or ABI change. The non-published
testfixture.wasm bytes change; the published SQLite package outputs do not.
This PR adds no package revision beyond the revisions already present in the
stack.

Validation run

The focused slice was built from a clean current-main worktree through
scripts/dev-shell.sh:

  • musl, zlib, Tcl, SQLite, fork instrumentation, kernel, host, rootfs, and
    testfixture builds completed;
  • applying the patch twice was idempotent and produced the same testfixture
    SHA-256 both times;
  • the unpatched Node fixture reproduced four lifecycle failures, 21 stale Tcl
    commands, and one live allocation;
  • the patched Node and Chromium focused runs each passed 5/5 tests with no
    live allocations;
  • the restacked head passes shell syntax and contains only the patch-number and
    hook integration needed by SQLite tests: use the UTF-16 STAT4 allocation range #932's existing testfixture patch loop.

Validation not run

The full SQLite upstream matrix, full Vitest suite, wasm64, and conformance
suites were not rerun locally for this testfixture-only change. GitHub staging
will validate the exact restacked head.

Extracted from the useful TestRecover portion of #769.

@github-actions

Copy link
Copy Markdown

Phase B-1 matrix build status — pr-933-staging

ABI v39. 5 built, 0 failed, 5 total.

Package Arch Status Sha
sqlite wasm32 built 5a13e73a
sqlite wasm64 built d7ce2dd3
php wasm32 built 9fd390fa
lamp wasm32 built ca2226cc
wordpress wasm32 built 0eb6e1e7

Auto-generated; replaced on each push. Raw data in the publish-status workflow artifact.

@brandonpayton

Copy link
Copy Markdown
Member Author

Closing this focused source PR because its unique TestRecover command-lifetime work is now carried by #934 at exact green head 260d75d5adc31b327f5591229dbfbb287d395fd6. #934 keeps it as a separate purpose commit and passed the full staging and browser gates. This is not a claim that this branch was merged verbatim.

@brandonpayton brandonpayton deleted the followup/sqlite-recover-tcl-lifetime branch July 14, 2026 02:42
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