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:13 +09:00
parent 76d5966b3b
commit c24e9ef330
3 changed files with 9 additions and 5 deletions

View File

@ -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>

View File

@ -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

View File

@ -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