Make PG_TEST_NOCLEAN work for temporary directories in TAP tests
authorMichael Paquier <[email protected]>
Mon, 3 Jul 2023 01:06:19 +0000 (10:06 +0900)
committerMichael Paquier <[email protected]>
Mon, 3 Jul 2023 01:06:19 +0000 (10:06 +0900)
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/[email protected]
Backpatch-through: 11

src/test/perl/TestLib.pm

index 237bacfc7b8900be6fc6c9fda38f15fe8c07b557..de851e1615670cca05dce900e57efb6cd7a2ac58 100644 (file)
@@ -187,7 +187,7 @@ sub tempdir
    return File::Temp::tempdir(
        $prefix . '_XXXX',
        DIR     => $tmp_check,
-       CLEANUP => 1);
+       CLEANUP => not defined $ENV{'PG_TEST_NOCLEAN'});
 }
 
 sub tempdir_short
@@ -195,7 +195,8 @@ sub tempdir_short
 
    # Use a separate temp dir outside the build tree for the
    # Unix-domain socket, to avoid file name length issues.
-   return File::Temp::tempdir(CLEANUP => 1);
+   return File::Temp::tempdir(
+       CLEANUP => not defined $ENV{'PG_TEST_NOCLEAN'});
 }
 
 =pod