Implements tests/_plans and previously deferred packages; updates plan README with new coverage numbers.
71 lines
2.9 KiB
Markdown
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
|