Skip to content

Fix test/install, add test-build, verify-results, docs#18

Open
jnasbyupgrade wants to merge 16 commits intoPostgres-Extensions:masterfrom
jnasbyupgrade:reorg-test
Open

Fix test/install, add test-build, verify-results, docs#18
jnasbyupgrade wants to merge 16 commits intoPostgres-Extensions:masterfrom
jnasbyupgrade:reorg-test

Conversation

@jnasbyupgrade
Copy link
Contributor

Summary

  • Fix test/install: Replace broken separate-invocation approach with schedule-based single pg_regress invocation — install state now persists into the main test suite
  • Add test-build: Pre-test SQL validation via test/build/ with better error messages than CREATE EXTENSION failures
  • Add verify-results: Safeguard preventing make results when tests are failing
  • Add .asc extension: Recognized as asciidoc alongside .adoc and .asciidoc
  • Document all new features in README

Test plan

  • Full BATS suite passes (206/206 tests)
  • Install persistence test confirms state survives across test phases
  • Schedule file auto-generated from test/install/*.sql files
  • Auto-detection enables/disables correctly based on file presence
  • make clean removes generated schedule file

🤖 Generated with Claude Code

jnasbyupgrade and others added 16 commits October 7, 2025 15:27
- Add .claude/settings.json with references to test repos
- Add CLAUDE.md documenting the meta-framework architecture
- Include git commit guidelines

Co-Authored-By: Claude <noreply@anthropic.com>
This ensures all projects using pgxntool will ignore Claude Code local
configuration files

Co-Authored-By: Claude <noreply@anthropic.com>
Add *.md to export-ignore to prevent markdown files (including CLAUDE.md)
from being included in extension distributions

Co-Authored-By: Claude <noreply@anthropic.com>
Add `.claude/commands/commit.md` with comprehensive commit workflow that will be
shared with pgxntool-test via symlink. This ensures consistent commit standards
across both repos.

Document META.json generation process in `build_meta.sh` to explain why we
generate from template (PGXN.org doesn't like empty optional fields) and
future possibilities (could generate control files from template).

Co-Authored-By: Claude <noreply@anthropic.com>
Add testing section to `CLAUDE.md` with critical rules: never use
`make installcheck` directly, never run `make results` without
verification, database connection requirements.

Enhance `README.asc` to recommend `make test`, document `make
results` verification workflow, and emphasize pgTap benefits.

Co-Authored-By: Claude <noreply@anthropic.com>
… validation

- Add `make_results.sh` script to handle copying results while respecting
  `output/*.source` files as source of truth
- Update `base.mk` to properly handle ephemeral files from `.source` files:
  - Track `TEST_OUT_SOURCE_FILES` and `TEST_EXPECTED_FROM_SOURCE`
  - Add ephemeral files to `EXTRA_CLEAN` so `make clean` removes them
  - Create `test/results/` directory automatically
  - Remove rule that created `test/output/` directory (it's an optional input)
- Add validation in `dist-only` target to ensure `.gitattributes` is committed
  before creating distribution (git archive only respects export-ignore for
  committed files)
- Update `README.asc` and `CLAUDE.md` to document that development should be
  done from pgxntool-test repository

Co-Authored-By: Claude <noreply@anthropic.com>
- Add `pgtle` make target to generate pg_tle registration SQL for extensions
- Support pg_tle version ranges (1.0.0-1.5.0 and 1.5.0+) with appropriate API usage
- Add `pgtle.sh` script to generate pg_tle SQL from extension control files and versioned SQL
- Update `base.mk` to include pg_tle generation with proper dependencies on SQL files
- Add pg_tle/ directory to EXTRA_CLEAN for `make clean`

- Enhance `.claude/commands/commit.md` to require checking all 3 repos before committing
- Add explicit guidance to commit all repos with changes together (no empty commits)
- Document multi-repo commit workflow in steps

- Update `CLAUDE.md` with pg_tle development context and documentation
- Update `README.asc` and `README.html` with pg_tle usage documentation

Co-Authored-By: Claude <noreply@anthropic.com>
Add "OPTIONAL TEST FEATURES" section documenting `test-build`, `test/install`, and `verify-results` configuration. Also clarify that `verify-results` works with all `pg_regress`-based tests, not just pgTap, and fix assignment to use `:=` to avoid recursion.

Co-Authored-By: Claude <noreply@anthropic.com>
Replace local commit.md with reference to canonical version in pgxntool-test. All three repos (pgxntool, pgxntool-test, pgxntool-test-template) now share the same commit workflow.

Co-Authored-By: Claude <noreply@anthropic.com>
Add new pg_tle version range to handle API changes in 1.4.0:
- Split 1.0.0-1.5.0 range into 1.0.0-1.4.0 and 1.4.0-1.5.0
- Version 1.4.0 added uninstall function (backward-incompatible)
- Version 1.5.0 added schema parameter (another boundary)
- Update `base.mk` pattern rules for three version ranges
- Update `pgtle.sh` documentation and logic for new range

Extract shared utility functions into `lib.sh`:
- Move `error()`, `die()`, and `debug()` functions from `pgtle.sh`
- Update `pgtle.sh` and `setup.sh` to source `lib.sh`
- Reduces code duplication and improves maintainability

Refine `.gitattributes` export rules:
- Add specific excludes: `CLAUDE.md`, `PLAN-*.md`, `.DS_Store`
- Remove blanket `*.md` exclude (too broad)
- Allows README.md and other docs to be included in distributions

Add documentation about directory purity in `CLAUDE.md`:
- Emphasize that pgxntool directory contains ONLY embedded files
- Warn against adding temporary files or planning documents
- Clarify that such files belong in pgxntool-test instead

Co-Authored-By: Claude <noreply@anthropic.com>
Remove references to pgxntool-test-template (now consolidated):
- Template files moved to pgxntool-test/template/
- Remove template directory from `.claude/settings.json`
- Update `CLAUDE.md` for two-repository pattern

Convert `.claude/commands/commit.md` to symlink:
- Development happens in pgxntool-test, avoid duplication
- Symlink: `commit.md -> ../../../pgxntool-test/.claude/commands/commit.md`

Related changes in pgxntool-test:
- Consolidate template files into pgxntool-test/template/
- Simplify commit workflow to two-phase (remove amend step)

Co-Authored-By: Claude <noreply@anthropic.com>
Merges master's control.mk system and update-setup-files.sh while
preserving test-build, test-install, and verify-results features
from the build-test branch.

Key changes:
- Added control.mk.sh for parsing .control files
- Added update-setup-files.sh for 3-way merging after pgxntool-sync
- Added SETUP_FILES/SETUP_SYMLINKS config to lib.sh
- Simplified meta.mk.sh (defers extension handling to control.mk.sh)
- Used master's variable naming (TEST__SOURCE__*)
- Preserved PGXNTOOL_ENABLE_TEST_BUILD feature
- Preserved PGXNTOOL_ENABLE_TEST_INSTALL feature
- Preserved PGXNTOOL_ENABLE_VERIFY_RESULTS feature

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…s, docs

Replace broken separate-invocation test-install with schedule-based approach:
install files now run in the same pg_regress invocation as regular tests via
an auto-generated schedule file with ../install/ relative paths. State created
by install files persists into the main test suite.

- Add `test-build` feature for pre-test SQL validation via `test/build/`
- Add `verify-results` safeguard preventing `make results` when tests fail
- Add `.asc` to recognized asciidoc extensions
- Document test-build, test/install, and verify-results in README
- Update `_.gitignore` for auto-generated `test/install/schedule`
- Remove `.claude/` directory (moved to pgxntool-test)

Related changes in pgxntool-test:
- Add install persistence test validating state survives across test phases
- Rework `test-test-install.bats` for schedule-based approach
- Add template marker files for install persistence validation

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant