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

71 lines
2.9 KiB
Markdown

# 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](pgsql.md) | readers/pgsql, writers/pgsql, pkg/pgsql | 92.4 / 86.5 / 87.8 (done, live) |
| 2 | [sqlexec.md](sqlexec.md) | writers/sqlexec | 99.0 (done, live) |
| 3 | [template.md](template.md) | writers/template | 98.9 (done) |
| 4 | [models.md](models.md) | pkg/models | 99.1 (done) |
| 5 | [cmd.md](cmd.md) | cmd/relspec, pkg/jobs | 71.3 / 96.6 (done) |
| 6 | [ui.md](ui.md) | pkg/ui | 69.9 (done) |
| 7 | [diff-merge.md](diff-merge.md) | pkg/diff, pkg/merge | 92.1 / 98.1 (done) |
| 8 | [sqltypes.md](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