2.7 KiB
2.7 KiB
Plan: PostgreSQL
Tooling
- Live tests:
tests/dbtest/dbtest.sh test postgres(defaults to readers/pgsql, writers/pgsql, writers/sqlexec) orup postgres+eval "$(tests/dbtest/dbtest.sh env postgres)". - Isolation: each live test creates and drops its own schema; shared fixture DB comes from
init.sql.
Existing
- Reader tests:
pkg/readers/pgsql/reader_test.go(live tests skipped withoutRELSPEC_TEST_PG_CONN; pure tests: MapDataType, ParseIndexDefinition, DeriveRelationship, composite FK) - Writer tests: diff_statements, directives, extensions, generated_column, migration_writer, serial_sequence
- Data:
tests/postgres/init.sql,tests/postgres/issue21,tests/assets/dbml/*,examples/test_schema*.dbml
readers/pgsql (16.0%)
| Item | Gap | Approach |
|---|---|---|
normalizePostgresDefault (queries.go) |
0% | Pure; table-driven: casts, nextval, functions, quoted literals, NULL |
countColumns/Constraints/Indexes |
0% | Pure; build Database fixtures |
ReadDatabase/ReadSchema/ReadTable |
~0% | Live; run against init.sql DB; assert counts, PK/FK/unique/check/index, views, sequences, extensions |
query* (11 funcs) |
0% | Covered via live ReadDatabase; add one live case per object type |
close |
0% | Live; connection released after read and on error |
Data needed: extend tests/postgres/init.sql (loaded by dbtest on up; apply changes with dbtest.sh restart postgres) with a view, sequence, check constraint, partial index, extension, composite FK (verify what already exists first).
writers/pgsql (74.0%)
| Item | Gap | Approach |
|---|---|---|
extractTableNameFromCreate, extractStatementContext, extractSQLStringValue, parseQualifiedIdent, firstBareIdent, firstIdentAfterKeyword, stripQuotes, buildStmtContext, detectStatementType, truncateStatement |
0% | Pure; table-driven; quoted/qualified/unquoted idents, each statement type, long statements |
getCurrentTimestamp, finishReport, writeReport |
0% | Report written to temp file; JSON shape, counts, failed statements |
executeStatements, executeDatabaseSQL |
0% | Live; success, failure with continue-on-error, failure stop, report output |
generateLiveDiffStatements |
28.6% | Live; empty DB, drifted DB, identical DB |
currentColumnHasDescription, ExecuteCommentColumn |
0% | Migration writer fixtures with comments added/removed/changed |
template_functions.go filter, mapFunc |
0% | Pure |
Reuse tests/integration/failed_statements_example.txt for failed-statement report cases. Ad-hoc SQL setup: dbtest.sh exec postgres <file>.
pkg/pgsql (87.8%)
- Spot-check uncovered funcs after the above; add keyword/datatype edge cases only.