Fix test/install, add test-build, verify-results, docs#18
Fix test/install, add test-build, verify-results, docs#18jnasbyupgrade wants to merge 16 commits intoPostgres-Extensions:masterfrom
Conversation
- 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>
Enhancement request: Override mechanism for install/build file listsI'm planning to use the test/install support for pg_tle integration in my extensions monorepo. The auto-detection is great for the common case, but I need to control which files run and in what order. Two requests: 1. Documented override for test/install and test-build file lists
Suggested approach: Expose an intermediate variable that the schedule generation uses, documented as the public API for overriding: # Default: auto-detected from test/install/*.sql (unordered)
# Projects can override for ordering or conditional inclusion.
PGXNTOOL_INSTALL_TESTS ?= $(notdir $(basename $(TEST_INSTALL_SQL_FILES)))
$(PGXNTOOL_INSTALL_SCHEDULE):
@echo "# Auto-generated - DO NOT EDIT" > $@
@for f in $(PGXNTOOL_INSTALL_TESTS); do \
echo "test: ../install/$$f" >> $@; \
doneThen projects can do: include pgxntool/base.mk
# Explicit ordering + conditional pg_tle setup
PGXNTOOL_INSTALL_TESTS = extensions
ifdef PGTLE_MODE
PGXNTOOL_INSTALL_TESTS := pgtle-setup $(PGXNTOOL_INSTALL_TESTS)
endifSame pattern would be useful for test-build ( 2. Document new make targets to help with conflictsProjects that already hand-coded Suggestions:
|
Summary
test/build/with better error messages thanCREATE EXTENSIONfailuresmake resultswhen tests are failing.ascextension: Recognized as asciidoc alongside.adocand.asciidocTest plan
test/install/*.sqlfilesmake cleanremoves generated schedule file🤖 Generated with Claude Code