Combine initdb tests that successfully create a data directory.
authorMichael Paquier <[email protected]>
Mon, 23 Dec 2019 01:51:00 +0000 (10:51 +0900)
committerMichael Paquier <[email protected]>
Mon, 23 Dec 2019 01:51:00 +0000 (10:51 +0900)
This eliminates many seconds of test duration and the cause to invoke
"rm -rf", which is typically unavailable on Windows.

This is a backpatch of 1a629c1 which has never been applied to
REL9_4_STABLE.  Per complain from buildarm member drongo.

Reported-by: Tom Lane
Author: Michael Paquier, Noah Misch
Discussion: https://postgr.es/m/11800.1577060649@sss.pgh.pa.us

src/bin/initdb/t/001_initdb.pl

index eef2300009d03ef506a620b66169151e02e89024..c4e514c7fbf7d12622f95d64b7e51d096e30ffc1 100644 (file)
@@ -1,44 +1,36 @@
+# To test successful data directory creation with an additional feature, first
+# try to elaborate the "successful creation" test instead of adding a test.
+# Successful initdb consumes much time and I/O.
+
 use strict;
 use warnings;
 use TestLib;
-use Test::More tests => 19;
+use Test::More tests => 14;
 
 my $tempdir = TestLib::tempdir;
+my $xlogdir = "$tempdir/pgxlog";
+my $datadir = "$tempdir/data";
 
 program_help_ok('initdb');
 program_version_ok('initdb');
 program_options_handling_ok('initdb');
 
-command_ok([ 'initdb', "$tempdir/data" ], 'basic initdb');
-command_fails([ 'initdb', "$tempdir/data" ], 'existing data directory');
-command_ok([ 'initdb', '-N', "$tempdir/data2" ], 'nosync');
-command_ok([ 'initdb', '-S', "$tempdir/data2" ], 'sync only');
-command_fails([ 'initdb', '-S', "$tempdir/data3" ],
+command_fails([ 'initdb', '-S', "$tempdir/nonexistent" ],
    'sync missing data directory');
-mkdir "$tempdir/data4" or BAIL_OUT($!);
-command_ok([ 'initdb', "$tempdir/data4" ], 'existing empty data directory');
-
-system_or_bail "rm -rf '$tempdir'/*";
 
-command_ok([ 'initdb', '-X', "$tempdir/pgxlog", "$tempdir/data" ],
-   'separate xlog directory');
-
-system_or_bail "rm -rf '$tempdir'/*";
+mkdir $xlogdir;
+mkdir "$xlogdir/lost+found";
 command_fails(
-   [ 'initdb', '-X', 'pgxlog', "$tempdir/data" ],
+   [ 'initdb', '-X', $xlogdir, $datadir ],
+   'existing nonempty xlog directory');
+rmdir "$xlogdir/lost+found";
+command_fails(
+   [ 'initdb', '-X', 'pgxlog', $datadir ],
    'relative xlog directory not allowed');
 
-system_or_bail "rm -rf '$tempdir'/*";
-mkdir "$tempdir/pgxlog";
-command_ok([ 'initdb', '-X', "$tempdir/pgxlog", "$tempdir/data" ],
-   'existing empty xlog directory');
-
-system_or_bail "rm -rf '$tempdir'/*";
-mkdir "$tempdir/pgxlog";
-mkdir "$tempdir/pgxlog/lost+found";
-command_fails([ 'initdb', '-X', "$tempdir/pgxlog", "$tempdir/data" ],
-   'existing nonempty xlog directory');
+mkdir $datadir;
+command_ok([ 'initdb', '-N', '-T', 'german', '-X', $xlogdir, $datadir ],
+   'successful creation');
 
-system_or_bail "rm -rf '$tempdir'/*";
-command_ok([ 'initdb', '-T', 'german', "$tempdir/data" ],
-   'select default dictionary');
+command_ok([ 'initdb', '-S', $datadir ], 'sync only');
+command_fails([ 'initdb', $datadir ], 'existing data directory');