There were a few tests/configurations that the FreeBSD job did under Cirrus that we didn't carry over yet. I looked into this, and the attached patch fixes that. Some of these tests are quite important, I think, so we should put those somewhere.

I moved most of them over to macOS, mainly to keep them all together, since some things had already been moved there, and the overall run-time outcome from this seems reasonable.

The "Test running" step could probably be tweaked cosmetically a bit more. I put in a YAML anchor so we could move it around or duplicate it more easily, but maybe that's not necessary or useful (and the use of the DYLD_* environment variable doesn't make it portable anyway). Also, it's not clear if the "Stop running server" step is needed and exactly how it should be phrased to be most effective in this new environment.
From a067f35829f5db7b7b03d2ac1eed934820597a5c Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <[email protected]>
Date: Wed, 3 Jun 2026 12:47:35 +0200
Subject: [PATCH v7.2.pe] Move more coverage from previously FreeBSD elsewhere

The following testing aspects were previously (Cirrus CI) covered by
the FreeBSD job.  Since we currently (GitHub Actions) don't have
FreeBSD support, we move these elsewhere for now:

- RELCACHE_FORCE_RELEASE (moved to macOS)
- ENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS (moved to macOS)
- PG_TEST_INITDB_EXTRA_OPTS test reading/writing/copying of node trees
  as well as debug_parallel_query=regress (moved to macOS)
- PG_TEST_PG_UPGRADE_MODE --link (moved to Linux 64-bit (macOS already
  tests --clone))
- meson test --setup running (moved to macOS)
---
 .github/workflows/pg-ci.yml | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/.github/workflows/pg-ci.yml b/.github/workflows/pg-ci.yml
index 8594d540f6a..f17ea8d4037 100644
--- a/.github/workflows/pg-ci.yml
+++ b/.github/workflows/pg-ci.yml
@@ -484,6 +484,7 @@ jobs:
   # Linux Meson, 64 bit
   #
   # SPECIAL:
+  # - Enables --link for pg_upgrade
   # - Uses address sanitizer, (sanitizer failures are typically printed in the
   #   server log). We test asan with meson rather than autoconf, as it's a bit
   #   faster at running the tests.
@@ -502,6 +503,7 @@ jobs:
       - name: Update Environment
         env:
           SANITIZER_FLAGS: -fsanitize=address
+          PG_TEST_PG_UPGRADE_MODE: --link
           PG_TEST_INITDB_EXTRA_OPTS: -c io_method=io_uring
         run: *linux_update_config_cmd
 
@@ -535,9 +537,11 @@ jobs:
 
 
   # SPECIAL:
+  # - Uses postgres specific CPPFLAGS that increase test coverage
   # - Enables --clone for pg_upgrade and pg_combinebackup
   # - Specifies configuration options that test reading/writing/copying of 
node trees
   # - Specifies debug_parallel_query=regress, to catch related issues during CI
+  # - Also runs tests against a running postgres instance
   macos:
     name: macOS - Meson
     needs: [setup, sanity-check]
@@ -574,6 +578,7 @@ jobs:
 
       CC: ccache cc
       CXX: ccache c++
+      CPPFLAGS: -DRELCACHE_FORCE_RELEASE 
-DENFORCE_REGRESSION_TEST_NAME_RESTRICTIONS
       CFLAGS: -Og -ggdb
       CXXFLAGS: -Og -ggdb
       PG_TEST_PG_UPGRADE_MODE: --clone
@@ -663,6 +668,30 @@ jobs:
           ADDITIONAL_SETUP: ulimit -n 1024
         run: *meson_test_world_cmd
 
+      - name: Test running
+        env:
+          # default is 256, pretty low
+          ADDITIONAL_SETUP: ulimit -n 1024
+        run: &meson_test_running_cmd |
+          ${{case(runner.os == 'Windows', '', 'ulimit -c unlimited')}}
+
+          ${{env.ADDITIONAL_SETUP}}
+
+          meson test ${{env.MTEST_ARGS}} --quiet --suite setup --logbase setup
+          export 
DYLD_LIBRARY_PATH="$(pwd)/build/tmp_install/usr/local/pgsql/lib/:$DYLD_LIBRARY_PATH"
+          mkdir -p build/testrun
+          build/tmp_install/usr/local/pgsql/bin/initdb -N build/runningcheck 
--no-instructions -A trust
+          echo "include '$(pwd)/src/tools/ci/pg_ci_base.conf'" >> 
build/runningcheck/postgresql.conf
+          build/tmp_install/usr/local/pgsql/bin/pg_ctl -c -o '-c fsync=off' -D 
build/runningcheck -l build/testrun/runningcheck.log start
+          meson test ${{env.MTEST_ARGS}} --num-processes ${{env.TEST_JOBS}} 
--setup running
+          build/tmp_install/usr/local/pgsql/bin/pg_ctl -D build/runningcheck 
stop
+
+      # FIXME This was needed on Cirrus, not clear if still needed on GHA.
+      - name: Stop running server
+        if: failure()
+        run: |
+          build/tmp_install/usr/local/pgsql/bin/pg_ctl -D build/runningcheck 
stop || true
+
       - name: Core backtraces
         if: failure() && !cancelled()
         run: src/tools/ci/cores_backtrace.sh macos "$HOME/cores"

base-commit: 273a3c77615e793089b2f41b666b6fcaa970a0c9
prerequisite-patch-id: 0a2de37807149c445a4cd80241a42ee3f5ea79a3
prerequisite-patch-id: fbb888f1b18b110d58732fc73dabd5d7260d3b95
prerequisite-patch-id: 771699edad2daa5f2d9104767c5558f9c972f273
-- 
2.54.0

Reply via email to