Files
relspecgo/tests/_plans/README.md
T
warkanum 495a21b67b test: expand coverage across readers, writers, cmd, ui, diff and merge
Implements tests/_plans and previously deferred packages; updates plan
README with new coverage numbers.
2026-10-03 21:33:59 +02:00

2.9 KiB

Test Coverage Plans

Baseline: 51.0% total statements (2026-10-03, after PRs #41-#43). Scope: pgsql, sqlexec, template, plus non-reader/writer packages. Other readers/writers deferred.

Order

# Plan Package(s) Now
1 pgsql.md readers/pgsql, writers/pgsql, pkg/pgsql 92.4 / 86.5 / 87.8 (done, live)
2 sqlexec.md writers/sqlexec 99.0 (done, live)
3 template.md writers/template 98.9 (done)
4 models.md pkg/models 99.1 (done)
5 cmd.md cmd/relspec, pkg/jobs 71.3 / 96.6 (done)
6 ui.md pkg/ui 69.9 (done)
7 diff-merge.md pkg/diff, pkg/merge 92.1 / 98.1 (done)
8 sqltypes.md pkg/sqltypes 87.0 (done)

Beyond the plans (previously deferred)

Package Before Now
writers/prisma 2.0 96.5
readers/prisma 37.5 97.5
readers/typeorm 5.5 97.0
writers/typeorm 55.5 98.4
writers/drizzle 49.1 92.8
writers/mssql 38.3 89.1
writers/mysql 49.5 89.8
writers/sqlite 63.2 90.1
readers/drizzle 0 77.9
readers/gorm 65.6 88.5
readers/bun 72.5 87.0
writers/gorm 76.2 87.9
writers/bun 79.3 89.6
pkg/writers 26.6 97.2
pkg/transform 0 100.0

Conventions

  • Same package as code under test; table-driven; must pass -race.
  • Existing data first: tests/assets/*, examples/*.dbml, tests/postgres/init.sql, tests/postgres/issue21. Generate new data only where listed under "Data needed".
  • New fixtures go in tests/assets/<format>/ or package testdata/.
  • Live-DB tests: skip unless the env var is set (pattern in pkg/readers/pgsql/reader_test.go). Use tests/dbtest/dbtest.sh (podman/docker; see tests/dbtest/README.md):
    • dbtest.sh up|down <postgres|mssql|mysql|all>
    • eval "$(dbtest.sh env postgres)" sets RELSPEC_TEST_PG_CONN (mssql: RELSPEC_TEST_MSSQL_CONN, mysql: RELSPEC_TEST_MYSQL_CONN)
    • dbtest.sh test <db> [pkgs] runs up, go test, down
  • Fixtures for live DBs: postgres tests/postgres/init.sql, mssql test_data/mssql/test_schema.sql, mysql tests/dbtest/init/mysql.sql.
  • Prerequisite: working container networking (currently blocked until reboot into matching kernel; tun module).
  • Prefer pure-function tests over DB tests wherever the logic can be isolated.
  • Output assertions must not depend on map order (see memory: map iteration determinism).

Targets

Package Target
pgsql (all three) >= 85
sqlexec >= 80
template >= 85
models >= 80
cmd/relspec >= 65
jobs >= 85
ui >= 40 (data ops/pure helpers; screens via smoke tests)
diff, merge >= 85
sqltypes >= 85

Verify

  • go test -race -coverprofile=c.out ./pkg/<pkg>/ then go tool cover -func=c.out
  • make test before commit