-
Notifications
You must be signed in to change notification settings - Fork 1
Switch to pgxn-tools based testing #5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
jnasbyupgrade
wants to merge
18
commits into
master
Choose a base branch
from
master-pre-rollback
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+255
−78
Open
Changes from all commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
fa15ccb
Switch to pgxn-tools based testing
jnasbyupgrade 99083b8
Remove .travis.yml
jnasbyupgrade aa53b91
Remove errant vim swapfile
jnasbyupgrade 68e8afc
Update test workflow
jnasbyupgrade 9859566
Add missing PGUSER argument
jnasbyupgrade 9a1e50b
Fix dump test
jnasbyupgrade 594d248
Squashed 'pgxntool/' changes from 890053c..e9c24de
jnasbyupgrade a217824
Pull pgxntool from master
jnasbyupgrade 8dc5cfc
dump test is actually included in make test
jnasbyupgrade 728f815
Switch to github CI testing
jnasbyupgrade 2e984c6
Merge remote-tracking branch 'upstream/master' into master-pre-rollback
jnasbyupgrade ebdd892
Merge remote-tracking branch 'upstream/master' into master-pre-rollback
jnasbyupgrade 3eefe4c
Add SQL style linter (vendored Postgres-Extensions/linter)
jnasbyupgrade 1f8bbfe
Build cat_tools from its 0.3.0 git tag instead of pgxn install --unst…
jnasbyupgrade 48edb3d
Adapt to cat_tools 0.3.0: renamed function, two new object types
jnasbyupgrade 8ecaeaf
Merge remote-tracking branch 'origin/add-linter' into master-pre-roll…
jnasbyupgrade 8e59c4c
Regenerate test/expected/zzz_build.out after merging the linter PR
jnasbyupgrade 4fe08c0
Classify partitioned table/index as unsupported, not untested
jnasbyupgrade File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,159 @@ | ||
| name: CI | ||
| on: | ||
| push: | ||
| branches: | ||
| - master | ||
| pull_request: | ||
| env: | ||
| PGUSER: postgres | ||
| jobs: | ||
| # Style linter (https://github.com/Postgres-Extensions/linter, vendored at | ||
| # .vendor/linter -- lint.mk is the thin local hand-off, see its comment). | ||
| # No `needs:` on anything: this is the cheapest possible check (no | ||
| # database, no container beyond a plain checkout, seconds to run), so it | ||
| # should never be waiting in a queue behind -- or racing for a runner slot | ||
| # against -- the PG matrix below. It's gated behind nothing and everything | ||
| # else of any real weight is gated behind it (see the `test` job's needs). | ||
| # Deliberately checked out WITHOUT submodules -- `make lint` is the same | ||
| # command a developer runs locally, and lint.mk self-initializes the | ||
| # submodule on first use. Using the exact same entry point here is what | ||
| # actually proves that self-init works, rather than papering over it with | ||
| # a submodules: true checkout. | ||
| lint: | ||
| name: 🧹 SQL Lint | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Check out the repo | ||
| uses: actions/checkout@v4 | ||
| - name: Lint SQL | ||
| run: make lint | ||
|
|
||
| # Cheap gate that lets the test matrix below skip itself on commits that | ||
| # touch only docs. Runs on every push/pull_request unconditionally (no | ||
| # paths-ignore on the workflow itself) -- a workflow-level paths-ignore | ||
| # would skip this job too on a docs-only push, and the required | ||
| # all-checks-passed check would then never report and get stuck Pending in | ||
| # branch protection. | ||
| # | ||
| # Also derives the supported-PostgreSQL-major list the test job's matrix | ||
| # consumes, from a single pair of constants below, so adding or dropping a | ||
| # major is a one-line edit here instead of touching the matrix directly. | ||
| changes: | ||
| name: 🔍 Detect changes & derive PG matrix | ||
| runs-on: ubuntu-latest | ||
| outputs: | ||
| docs_only: ${{ steps.diff.outputs.docs_only }} | ||
| supported_pg: ${{ steps.pg.outputs.supported_pg }} | ||
| steps: | ||
| - name: Check out the repo | ||
| uses: actions/checkout@v4 | ||
| with: | ||
| # Full history needed so BASE and HEAD below are both reachable | ||
| # for `git diff`. | ||
| fetch-depth: 0 | ||
| - name: Compute per-push changed files | ||
| id: diff | ||
| run: | | ||
| # Fail-safe FIRST, before anything else runs: any early exit below | ||
| # (an unusable BASE/HEAD, a failed git diff) leaves this in place, | ||
| # so the test matrix only ever gets skipped after actually proving | ||
| # the push is docs-only. | ||
| echo "docs_only=false" >> "$GITHUB_OUTPUT" | ||
|
|
||
| if [ "${{ github.event_name }}" = "pull_request" ]; then | ||
| BASE="${{ github.event.pull_request.base.sha }}" | ||
| HEAD="${{ github.event.pull_request.head.sha }}" | ||
| else | ||
| BASE="${{ github.event.before }}" | ||
| HEAD="${{ github.event.after }}" | ||
| fi | ||
|
|
||
| echo "base=$BASE" | ||
| echo "head=$HEAD" | ||
|
|
||
| # A missing HEAD, or an all-zeros BASE (a new branch's first push, | ||
| # where GitHub reports no prior commit), means no real diff can be | ||
| # computed -- leave the fail-safe in place. | ||
| if [ -z "$HEAD" ] || [ -z "$BASE" ] || [[ "$BASE" =~ ^0+$ ]]; then | ||
| exit 0 | ||
| fi | ||
|
|
||
| CHANGED=$(git diff --name-only "$BASE" "$HEAD") || exit 0 | ||
| [ -z "$CHANGED" ] && exit 0 | ||
|
|
||
| DOCS_ONLY=true | ||
| while IFS= read -r f; do | ||
| if ! [[ "$f" =~ \.(md|asc)$ ]]; then | ||
| DOCS_ONLY=false | ||
| break | ||
| fi | ||
| done <<< "$CHANGED" | ||
|
|
||
| echo "changed files:" | ||
| echo "$CHANGED" | ||
| echo "docs_only=$DOCS_ONLY" >> "$GITHUB_OUTPUT" | ||
| - name: Derive the supported-PostgreSQL-major list | ||
| id: pg | ||
| run: | | ||
| # SINGLE SOURCE OF TRUTH for the supported PostgreSQL majors. To | ||
| # add or drop a major, edit only the two constants below; the test | ||
| # job's matrix derives its version list from them. Do NOT hardcode | ||
| # a supported major directly in a job matrix. | ||
| # | ||
| # NEWEST -- highest PostgreSQL major tested. | ||
| # CURRENT_FLOOR -- oldest major supported. object_reference | ||
| # requires cat_tools at both build and runtime, | ||
| # and cat_tools's own current release declares | ||
| # PostgreSQL 12 as its build floor, so | ||
| # object_reference can't usefully claim support | ||
| # for anything older either. | ||
| NEWEST=18 | ||
| CURRENT_FLOOR=12 | ||
|
|
||
| supported=$(seq "$NEWEST" -1 "$CURRENT_FLOOR") | ||
|
|
||
| # Emit a JSON array for the test job's matrix to consume via | ||
| # fromJSON. | ||
| json=$(printf '%s\n' $supported | paste -sd, - | sed 's/^/[/; s/$/]/') | ||
| echo "supported_pg=$json" >> "$GITHUB_OUTPUT" | ||
|
|
||
| test: | ||
| # Gated behind lint too, not just changes: lint is nearly free to run, | ||
| # so a baseline that's already broken by a style violation shouldn't | ||
| # also tie up runner slots on the much heavier PG matrix below. | ||
| # success() must be written explicitly -- GitHub only assumes success() | ||
| # as a job's default when the job has no if: at all. | ||
| needs: [changes, lint] | ||
| if: success() && needs.changes.outputs.docs_only != 'true' | ||
| strategy: | ||
| matrix: | ||
| # Supported majors, from the single source in the changes job. | ||
| pg: ${{ fromJSON(needs.changes.outputs.supported_pg) }} | ||
| name: 🐘 PostgreSQL ${{ matrix.pg }} | ||
| runs-on: ubuntu-latest | ||
| container: pgxn/pgxn-tools | ||
| steps: | ||
| - name: Start PostgreSQL ${{ matrix.pg }} | ||
| run: pg-start ${{ matrix.pg }} | ||
| - name: Check out the repo | ||
| uses: actions/checkout@v4 | ||
| - name: Test on PostgreSQL ${{ matrix.pg }} | ||
| run: make test | ||
|
|
||
| # A single stable check name for use as a required status check in branch | ||
| # protection rules. Matrix jobs produce check names like "🐘 PostgreSQL 14" | ||
| # which would all need to be listed individually and updated whenever the | ||
| # matrix changes. This job passes if all others passed or were skipped | ||
| # (e.g. test, on a docs-only push), and fails if any failed or were | ||
| # cancelled. | ||
| all-checks-passed: | ||
| needs: [changes, lint, test] | ||
| if: always() | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Check all jobs passed or were skipped | ||
| run: | | ||
| if [[ "${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}" == "true" ]]; then | ||
| echo "One or more jobs failed or were cancelled" | ||
| exit 1 | ||
| fi | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -39,6 +39,7 @@ test/install/schedule | |
| # Misc | ||
| tmp/ | ||
| .DS_Store | ||
| .claude/settings.local.json | ||
|
|
||
| # pg_tle generated files | ||
| /pg_tle/ | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| [submodule ".vendor/linter"] | ||
| path = .vendor/linter | ||
| url = https://github.com/Postgres-Extensions/linter.git |
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| # lint.mk — thin wrapper; the whole local footprint for consuming | ||
| # https://github.com/Postgres-Extensions/linter. Everything else lives in | ||
| # the .vendor/linter submodule; see its README for available targets/rules. | ||
| # | ||
| # Self-initializing (via the rule below) so `make lint` works right after a | ||
| # plain `git clone`, with no --recurse-submodules needed, and so CI can rely | ||
| # on the exact same entry point a developer would use locally. | ||
| .vendor/linter/lint.mk: | ||
| git submodule update --init -- .vendor/linter | ||
|
|
||
| include .vendor/linter/lint.mk |
This file was deleted.
Oops, something went wrong.
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.