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.zip

Installs 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.
294 charsno explicit “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

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

You give it
Test category or specific test case filter
You get back
Validation results from go test execution

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

TypeCommandSpeedWhat it tests
Diffgo test -v ./internal/diff -run TestDiffFromFiles~2sSchema comparison logic (no DB)
Plan/Applygo test -v ./cmd -run TestPlanAndApply~30-60sFull workflow with embedded PostgreSQL
Dumpgo test -v ./cmd/dump -run TestDumpCommand~10-20sSchema 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

  1. Create directory: mkdir -p testdata/diff/<category>/<test_name>
  2. Create old.sql (starting state) and new.sql (desired state)
  3. Generate expected files: PGSCHEMA_TEST_FILTER="<category>/<test_name>" go test -v ./cmd -run TestPlanAndApply --generate
  4. Review generated diff.sql and plan files
  5. Run without --generate to 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

  1. Fast iteration: diff tests first (no DB startup)
  2. Full validation: integration tests for the same category
  3. Before commit: go test -v ./... (or scoped to affected areas if full suite times out)

Environment Variables

VariablePurposeExample
PGSCHEMA_TEST_FILTERRun specific test cases"create_trigger/"
PGSCHEMA_POSTGRES_VERSIONTest specific PG version14, 17

When not to use it

  • When the environment lacks a compatible PostgreSQL version

Prerequisites

PostgreSQL version 14-18

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.

SkillInstallsUpdatedSafetyDifficulty
run-tests (this skill)15moReviewIntermediate
advanced-lokstra-validate-consistency06moReviewAdvanced
dbx-regenerate16moReviewIntermediate
litestream06moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry