run-tests
Runs automated tests for pgschema logic, including diff generation, planning, and dumping, with support for PostgreSQL versions 14-18.
Install
mkdir -p .claude/skills/run-tests && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3574" && unzip -o skill.zip -d .claude/skills/run-tests && rm skill.zipInstalls to .claude/skills/run-tests
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Run pgschema automated tests (go test) to validate diff logic, plan generation, and dump functionality using test fixtures. Use this skill whenever you need to run tests, debug test failures, add new test cases, regenerate expected outputs, or validate changes across PostgreSQL versions 14-18.Key capabilities
- →Validate schema diff logic using test fixtures
- →Execute full plan and apply workflows with embedded PostgreSQL
- →Perform schema extraction from test databases
- →Regenerate expected DDL outputs for test validation
- →Run tests across PostgreSQL versions 14 through 18
How it works
It uses Go test suites to compare schema states against fixtures and supports environment variables to filter tests and target specific PostgreSQL versions.
Inputs & outputs
When to use run-tests
- →Validating schema diff logic
- →Testing plan and apply workflows
- →Debugging schema extraction
- →Regenerating expected test outputs
About this skill
Run Tests
Run pgschema tests for validating implementation changes.
Test Types
| Type | Command | Speed | What it tests |
|---|---|---|---|
| Diff | go test -v ./internal/diff -run TestDiffFromFiles | ~2s | Schema comparison logic (no DB) |
| Plan/Apply | go test -v ./cmd -run TestPlanAndApply | ~30-60s | Full workflow with embedded PostgreSQL |
| Dump | go test -v ./cmd/dump -run TestDumpCommand | ~10-20s | Schema extraction from test databases |
Filtering Tests
Use PGSCHEMA_TEST_FILTER to scope to specific cases:
# Specific test case
PGSCHEMA_TEST_FILTER="create_trigger/add_trigger_when_distinct" go test -v ./internal/diff -run TestDiffFromFiles
# All tests in a category
PGSCHEMA_TEST_FILTER="create_trigger/" go test -v ./cmd -run TestPlanAndApply
Categories (in testdata/diff/): comment/, create_domain/, create_function/, create_index/, create_materialized_view/, create_policy/, create_procedure/, create_sequence/, create_table/, create_trigger/, create_type/, create_view/, default_privilege/, privilege/, dependency/, online/, migrate/
Regenerating Expected Output
When implementation intentionally changes generated DDL:
PGSCHEMA_TEST_FILTER="category/test_name" go test -v ./cmd -run TestPlanAndApply --generate
This overwrites diff.sql, plan.json, plan.sql, plan.txt. Always review with git diff afterward and re-run without --generate to confirm.
Testing Across PostgreSQL Versions
PGSCHEMA_POSTGRES_VERSION=14 go test -v ./cmd/dump -run TestDumpCommand_Employee
PGSCHEMA_POSTGRES_VERSION=17 PGSCHEMA_TEST_FILTER="create_trigger/" go test -v ./cmd -run TestPlanAndApply
Supported: 14, 15, 16, 17, 18.
Adding a New Test Case
- Create directory:
mkdir -p testdata/diff/<category>/<test_name> - Create
old.sql(starting state) andnew.sql(desired state) - Generate expected files:
PGSCHEMA_TEST_FILTER="<category>/<test_name>" go test -v ./cmd -run TestPlanAndApply --generate - Review generated
diff.sqland plan files - Run without
--generateto verify
For dump tests, create testdata/dump/<name>/ with manifest.json, raw.sql, pgdump.sql, pgschema.sql and register in cmd/dump/dump_integration_test.go.
Test Data Structure
testdata/diff/<category>/<test_name>/
├── old.sql # Starting schema
├── new.sql # Desired schema
├── diff.sql # Expected migration DDL
├── plan.json # Plan in JSON
├── plan.sql # Plan as SQL
└── plan.txt # Plan as text
Recommended Testing Order
- Fast iteration: diff tests first (no DB startup)
- Full validation: integration tests for the same category
- Before commit:
go test -v ./...(or scoped to affected areas if full suite times out)
Environment Variables
| Variable | Purpose | Example |
|---|---|---|
PGSCHEMA_TEST_FILTER | Run specific test cases | "create_trigger/" |
PGSCHEMA_POSTGRES_VERSION | Test specific PG version | 14, 17 |
When not to use it
- →When the environment lacks a compatible PostgreSQL version
Prerequisites
Limitations
- →Requires specific directory structure for test data
- →Requires manual review of generated files after regeneration
How it compares
It provides a structured way to regenerate expected DDL outputs and test against multiple PostgreSQL versions simultaneously.
Compared to similar skills
run-tests side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| run-tests (this skill) | 1 | 5mo | Review | Intermediate |
| advanced-lokstra-validate-consistency | 0 | 6mo | Review | Advanced |
| dbx-regenerate | 1 | 6mo | Review | Intermediate |
| litestream | 0 | 6mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by pgschema
View all by pgschema →You might also like
advanced-lokstra-validate-consistency
primadi
Validate application consistency - circular dependencies, schema validation, config checks, annotation validation, and service registration. Use after all code is implemented to identify issues before deployment.
dbx-regenerate
storj
Regenerate DBX code after making changes to .dbx schema files. Runs code generation, shows diff summary, validates compilation, and reports any errors.
litestream
benbjohnson
Expert knowledge for contributing to Litestream, a standalone disaster recovery tool for SQLite. Provides architectural understanding, code patterns, critical rules, and debugging procedures for WAL monitoring, LTX replication format, storage backend implementation, multi-level compaction, and SQLite page management. Use when working with Litestream source code, writing storage backends, debugging replication issues, implementing compaction logic, or handling SQLite WAL operations.
passion-dev
awalvie
Passion climbing training app development. Use for: adding handlers, modifying DB models, creating templates, understanding project architecture, running/testing the app, YAML import features.
drizzle-orm
EpicenterHQ
Drizzle ORM patterns for type branding and custom types. Use when working with Drizzle column definitions, branded types, or custom type conversions.
database-design
davila7
Database design principles and decision-making. Schema design, indexing strategy, ORM selection, serverless databases.