Force run of pg_upgrade in the build directory in its TAP test
authorMichael Paquier <[email protected]>
Sat, 4 Jun 2022 03:16:52 +0000 (12:16 +0900)
committerMichael Paquier <[email protected]>
Sat, 4 Jun 2022 03:16:52 +0000 (12:16 +0900)
TAP tests are run from their own directory in the source tree, and in a
VPATH build the execution of the pg_upgrade command was leaving behind a
file in the source tree, that should be left untouched.  In order to
avoid this issue, the test moves to PostgreSQL::Test::Utils::tmp_check,
so as any files generated by pg_upgrade do not impact the source tree,
but the build tree.  This has as nice side-effect to make unnessary the
presence of such files in pg_upgrade's .gitignore and Makefile.  This
strategy is similar to psql's test 010_tab_completion.pl, though the
reasons behind this choice are different.

In passing, fix one misleading test name that was added by 99f6f19.

Per discussion with Peter Eisentraut, Andrew Dunstan, Tom Lane, Andres
Freund and myself.

Discussion: https://postgr.es/m/f80ace33-11fb-1cd3-20f8-98f51d151088@enterprisedb.com

src/bin/pg_upgrade/.gitignore
src/bin/pg_upgrade/Makefile
src/bin/pg_upgrade/t/002_pg_upgrade.pl

index 939e50db6c5a81aeb2481e470ad1eeeed7695156..05200a09f1483dd37a8d574590d564883642eea8 100644 (file)
@@ -1,7 +1,4 @@
 /pg_upgrade
 # Generated by test suite
-/delete_old_cluster.sh
-/delete_old_cluster.bat
-/reindex_hash.sql
 /log/
 /tmp_check/
index 587793e815baa5006aa97cb46c53f2e4dd79ff40..80ebe9bd174b172888a5c91262ff9105bf3f185d 100644 (file)
@@ -48,8 +48,7 @@ uninstall:
 
 clean distclean maintainer-clean:
    rm -f pg_upgrade$(X) $(OBJS)
-   rm -rf delete_old_cluster.sh log/ tmp_check/ \
-          reindex_hash.sql
+   rm -rf log/ tmp_check/
 
 check:
    $(prove_check)
index 80437e93b71fb42cbb5a8bff05c5a95b00ac8bc4..55c7354ba2adf604ebe516a4494cf4cfc9e27a54 100644 (file)
@@ -206,6 +206,11 @@ if (defined($ENV{oldinstall}))
    }
 }
 
+# In a VPATH build, we'll be started in the source directory, but we want
+# to run pg_upgrade in the build directory so that any files generated finish
+# in it, like delete_old_cluster.{sh,bat}.
+chdir ${PostgreSQL::Test::Utils::tmp_check};
+
 # Upgrade the instance.
 $oldnode->stop;
 command_ok(
@@ -238,7 +243,7 @@ $newnode->command_ok(
        '-d',         $newnode->connstr('postgres'),
        '-f',         "$tempdir/dump2.sql"
    ],
-   'dump before running pg_upgrade');
+   'dump after running pg_upgrade');
 
 # Compare the two dumps, there should be no differences.
 my $compare_res = compare("$tempdir/dump1.sql", "$tempdir/dump2.sql");