diff options
author | Michael Paquier <michael@paquier.xyz> | 2023-07-03 10:06:13 +0900 |
---|---|---|
committer | Michael Paquier <michael@paquier.xyz> | 2023-07-03 10:06:13 +0900 |
commit | c24e9ef330ac7da1d1628d21b2d5defb0ec03c54 (patch) | |
tree | 9bac57ea5f6eb21e5560ca7debb231b5122fb199 | |
parent | 76d5966b3b798cc58025c77164fa944f2b6dd667 (diff) | |
download | postgresql-c24e9ef330ac7da1d1628d21b2d5defb0ec03c54.tar.gz postgresql-c24e9ef330ac7da1d1628d21b2d5defb0ec03c54.zip |
Make PG_TEST_NOCLEAN work for temporary directories in TAP tests
When set, this environment variable was only effective for data
directories but not for all the other temporary files created by
PostgreSQL::Test::Utils. Keeping the temporary files after a successful
run can be useful for debugging purposes.
The documentation is updated to reflect the new behavior, with contents
available in doc/ since v16 and in src/test/perl/README since v15.
Author: Jacob Champion
Reviewed-by: Daniel Gustafsson
Discussion: https://postgr.es/m/CAAWbhmgHtDH1SGZ+Fw05CsXtE0mzTmjbuUxLB9mY9iPKgM6cUw@mail.gmail.com
Discussion: https://postgr.es/m/YyPd9unV14SX2bLF@paquier.xyz
Backpatch-through: 11
-rw-r--r-- | doc/src/sgml/regress.sgml | 2 | ||||
-rw-r--r-- | src/test/perl/PostgreSQL/Test/Utils.pm | 7 | ||||
-rw-r--r-- | src/test/perl/README | 5 |
3 files changed, 9 insertions, 5 deletions
diff --git a/doc/src/sgml/regress.sgml b/doc/src/sgml/regress.sgml index 88a43b8961b..675db86e4d7 100644 --- a/doc/src/sgml/regress.sgml +++ b/doc/src/sgml/regress.sgml @@ -818,6 +818,8 @@ make check PROVE_TESTS='t/001_test1.pl t/003_test3.pl' <programlisting> PG_TEST_NOCLEAN=1 make -C src/bin/pg_dump check </programlisting> + This environment variable also prevents the test's temporary directories + from being removed. </para> <para> diff --git a/src/test/perl/PostgreSQL/Test/Utils.pm b/src/test/perl/PostgreSQL/Test/Utils.pm index a27fac83d26..220cab303c7 100644 --- a/src/test/perl/PostgreSQL/Test/Utils.pm +++ b/src/test/perl/PostgreSQL/Test/Utils.pm @@ -272,7 +272,7 @@ sub all_tests_passing Securely create a temporary directory inside C<$tmp_check>, like C<mkdtemp>, and return its name. The directory will be removed automatically at the -end of the tests. +end of the tests, unless the environment variable PG_TEST_NOCLEAN is provided. If C<prefix> is given, the new directory is templated as C<${prefix}_XXXX>. Otherwise the template is C<tmp_test_XXXX>. @@ -286,7 +286,7 @@ sub tempdir return File::Temp::tempdir( $prefix . '_XXXX', DIR => $tmp_check, - CLEANUP => 1); + CLEANUP => not defined $ENV{'PG_TEST_NOCLEAN'}); } =pod @@ -301,7 +301,8 @@ name, to avoid path length issues. sub tempdir_short { - return File::Temp::tempdir(CLEANUP => 1); + return File::Temp::tempdir( + CLEANUP => not defined $ENV{'PG_TEST_NOCLEAN'}); } =pod diff --git a/src/test/perl/README b/src/test/perl/README index 6ddee42a105..8fb44184b91 100644 --- a/src/test/perl/README +++ b/src/test/perl/README @@ -31,8 +31,9 @@ some lesser number of seconds. Data directories will also be left behind for analysis when a test fails; they are named according to the test filename. But if the environment -variable PG_TEST_NOCLEAN is set, data directories will be retained -regardless of test status. +variable PG_TEST_NOCLEAN is set, the data directories will be retained +regardless of test status. This environment variable also prevents the +test's temporary directories from being removed. Writing tests |