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'
PG_TEST_NOCLEAN=1 make -C src/bin/pg_dump check
+ This environment variable also prevents the test's temporary directories
+ from being removed.
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,
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 is given, the new directory is templated as C<${prefix}_XXXX>.
Otherwise the template is C.
@@ -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