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
This commit is contained in:
Michael Paquier 2023-07-03 10:06:14 +09:00
parent f50200c016
commit 4b15868b69
2 changed files with 7 additions and 5 deletions

View File

@ -268,7 +268,7 @@ sub all_tests_passing
Securely create a temporary directory inside C<$tmp_check>, like C<mkdtemp>, Securely create a temporary directory inside C<$tmp_check>, like C<mkdtemp>,
and return its name. The directory will be removed automatically at the 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>. If C<prefix> is given, the new directory is templated as C<${prefix}_XXXX>.
Otherwise the template is C<tmp_test_XXXX>. Otherwise the template is C<tmp_test_XXXX>.
@ -282,7 +282,7 @@ sub tempdir
return File::Temp::tempdir( return File::Temp::tempdir(
$prefix . '_XXXX', $prefix . '_XXXX',
DIR => $tmp_check, DIR => $tmp_check,
CLEANUP => 1); CLEANUP => not defined $ENV{'PG_TEST_NOCLEAN'});
} }
=pod =pod
@ -297,7 +297,8 @@ name, to avoid path length issues.
sub tempdir_short sub tempdir_short
{ {
return File::Temp::tempdir(CLEANUP => 1); return File::Temp::tempdir(
CLEANUP => not defined $ENV{'PG_TEST_NOCLEAN'});
} }
=pod =pod

View File

@ -31,8 +31,9 @@ some lesser number of seconds.
Data directories will also be left behind for analysis when a test fails; 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 they are named according to the test filename. But if the environment
variable PG_TEST_NOCLEAN is set, data directories will be retained variable PG_TEST_NOCLEAN is set, the data directories will be retained
regardless of test status. regardless of test status. This environment variable also prevents the
test's temporary directories from being removed.
Writing tests Writing tests