From 297b9ccff44859f274b7408045a9c91d2bb1c6d1 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Mon, 23 Dec 2019 10:51:00 +0900 Subject: Combine initdb tests that successfully create a data directory. 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 | 48 ++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/src/bin/initdb/t/001_initdb.pl b/src/bin/initdb/t/001_initdb.pl index eef2300009d..c4e514c7fbf 100644 --- a/src/bin/initdb/t/001_initdb.pl +++ b/src/bin/initdb/t/001_initdb.pl @@ -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'); -- cgit v1.2.3