Skip to content

Verification

Imam Ali Mustofa edited this page Nov 10, 2026 · 2 revisions

Verification & Proof Harness

The repository ships its own verification story. Everything on this page is reproducible by anyone with Docker and this repository.

Test suite (Pest + PHPUnit)

  • 178 tests: 171 default (against :memory:), 6 server-dependent (MultiConnectionTest + LocalRemoteReplicaTest) — run against two seeded libsql-server instances on 8081/8082 in CI — plus 1 opt-in cloud offline-write test (skipped without credentials). CI result: 177 passed, 1 skipped, 556 assertions, identical on all 7 legs.
  • Data types, Query Builder, Eloquent (relationships, casts, soft deletes, collections), transactions, vector types, schema operations.

Run:

composer install
./vendor/bin/pest

Server-dependent tests are skipped by default; enable with:

TURSO_SQLD_AVAILABLE=true ./vendor/bin/pest

(A running sqld is required on 127.0.0.1:8081 and :8082 — the CI workflow provisions these.)

Docker integration proof (docker/proof/)

A self-contained harness that builds a fresh Laravel 12 app, installs the driver from the tree under review, and proves it — through HTTP, through a web tier, during a real outage, and through sync — end to end.

Verified phases and their assert counts:

Phase Asserts What is proven
ProofRun 42 Console-side: health 3, connection modes/memory 12, remote 6, replica 4, transactions 8, second client 2, encryption at rest 4, write-failure rethrow 3
ProofHttp 8 Through nginx → php-fpm: fpm boot 4, remote read 2, write-failure surfaces as HTTP 500 2
ProofOfflineWrite 9 During outage: isOnline() false 1, journal captures DDL+inserts 7, server sees zero unsynced writes 1
ProofOfflineSync 5 After reconnect: isOnline() true 1, sync() drains journal 2, server holds exact drained rows 2
proof:offline-cloud (opt-in) 12 Turso Cloud flavor: bootstrap, journal, push, remote read, pushed drop

Driver 1.7.0 with the harness inside the built image verifies: 42 console asserts + 8 HTTP asserts + 9 outage asserts + 5 drain asserts per run — all green, with the outage window verified from the host side by an independent Hrana client (blind server during the outage, exact rows after the drain).

Run:

docker/proof/proof.sh

Reports are written to docker/proof/proof-report/ (gitignored).

Continuous integration matrix

.github/workflows/tests.yml:

Laravel PHP Verifies
12 8.2, 8.3, 8.4, 8.5 tests + sqld services (8081/8082)
13 8.3, 8.4, 8.5 tests + sqld services (8081/8082)

Green on every leg as of 1.7.0 (identical 556 assertions on all 7 legs).

What is not proven by CI

  • Turso Cloud flavor (proof:offline-cloud / TursoCloudOfflineWriteTest) — requires real cloud credentials; exercised manually, not in CI.
  • Encryption at rest is verified inside the harness (docker/proof/ phase encryption) but not as a standalone assertion across the test matrix.

Clone this wiki locally