diff options
Diffstat (limited to 'src/test/perl/TestLib.pm')
-rw-r--r-- | src/test/perl/TestLib.pm | 119 |
1 files changed, 74 insertions, 45 deletions
diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pm index 7c378e0fa97..8a3111056a8 100644 --- a/src/test/perl/TestLib.pm +++ b/src/test/perl/TestLib.pm @@ -5,34 +5,37 @@ use warnings; use Exporter 'import'; our @EXPORT = qw( - tempdir - start_test_server - restart_test_server - psql - system_or_bail - - command_ok - command_fails - command_exit_is - program_help_ok - program_version_ok - program_options_handling_ok - command_like - issues_sql_like + tempdir + start_test_server + restart_test_server + psql + system_or_bail + + command_ok + command_fails + command_exit_is + program_help_ok + program_version_ok + program_options_handling_ok + command_like + issues_sql_like ); use Cwd; use File::Spec; use File::Temp (); use Test::More; -BEGIN { + +BEGIN +{ eval { require IPC::Run; import IPC::Run qw(run start); 1; - } or do { + } or do + { plan skip_all => "IPC::Run not available"; - } + } } delete $ENV{PGCONNECT_TIMEOUT}; @@ -44,7 +47,8 @@ delete $ENV{PGSERVICE}; delete $ENV{PGSSLMODE}; delete $ENV{PGUSER}; -if (!$ENV{PGPORT}) { +if (!$ENV{PGPORT}) +{ $ENV{PGPORT} = 65432; } @@ -56,45 +60,58 @@ $ENV{PGPORT} = int($ENV{PGPORT}) % 65536; # -sub tempdir { +sub tempdir +{ return File::Temp::tempdir('testXXXX', DIR => cwd(), CLEANUP => 1); } my ($test_server_datadir, $test_server_logfile); -sub start_test_server { +sub start_test_server +{ my ($tempdir) = @_; my $ret; system "initdb -D $tempdir/pgdata -A trust -N >/dev/null"; - $ret = system 'pg_ctl', '-D', "$tempdir/pgdata", '-s', '-w', '-l', "$tempdir/logfile", '-o', "--fsync=off -k $tempdir --listen-addresses='' --log-statement=all", 'start'; + $ret = system 'pg_ctl', '-D', "$tempdir/pgdata", '-s', '-w', '-l', + "$tempdir/logfile", '-o', + "--fsync=off -k $tempdir --listen-addresses='' --log-statement=all", + 'start'; - if ($ret != 0) { + if ($ret != 0) + { system('cat', "$tempdir/logfile"); BAIL_OUT("pg_ctl failed"); } - $ENV{PGHOST} = $tempdir; + $ENV{PGHOST} = $tempdir; $test_server_datadir = "$tempdir/pgdata"; $test_server_logfile = "$tempdir/logfile"; } -sub restart_test_server { - system 'pg_ctl', '-s', '-D', $test_server_datadir, '-w', '-l', $test_server_logfile, 'restart'; +sub restart_test_server +{ + system 'pg_ctl', '-s', '-D', $test_server_datadir, '-w', '-l', + $test_server_logfile, 'restart'; } -END { - if ($test_server_datadir) { - system 'pg_ctl', '-D', $test_server_datadir, '-s', '-w', '-m', 'immediate', 'stop'; +END +{ + if ($test_server_datadir) + { + system 'pg_ctl', '-D', $test_server_datadir, '-s', '-w', '-m', + 'immediate', 'stop'; } } -sub psql { +sub psql +{ my ($dbname, $sql) = @_; - run ['psql', '-X', '-q', '-d', $dbname, '-f', '-'], '<', \$sql or die; + run [ 'psql', '-X', '-q', '-d', $dbname, '-f', '-' ], '<', \$sql or die; } -sub system_or_bail { +sub system_or_bail +{ system(@_) == 0 or BAIL_OUT("system @_ failed: $?"); } @@ -104,61 +121,72 @@ sub system_or_bail { # -sub command_ok { +sub command_ok +{ my ($cmd, $test_name) = @_; - my $result = run $cmd, '>', File::Spec->devnull(), '2>', File::Spec->devnull(); + my $result = run $cmd, '>', File::Spec->devnull(), '2>', + File::Spec->devnull(); ok($result, $test_name); } -sub command_fails { +sub command_fails +{ my ($cmd, $test_name) = @_; - my $result = run $cmd, '>', File::Spec->devnull(), '2>', File::Spec->devnull(); + my $result = run $cmd, '>', File::Spec->devnull(), '2>', + File::Spec->devnull(); ok(!$result, $test_name); } -sub command_exit_is { +sub command_exit_is +{ my ($cmd, $expected, $test_name) = @_; - my $h = start $cmd, '>', File::Spec->devnull(), '2>', File::Spec->devnull(); + my $h = start $cmd, '>', File::Spec->devnull(), '2>', + File::Spec->devnull(); $h->finish(); is($h->result(0), $expected, $test_name); } -sub program_help_ok { +sub program_help_ok +{ my ($cmd) = @_; subtest "$cmd --help" => sub { plan tests => 3; my ($stdout, $stderr); - my $result = run [$cmd, '--help'], '>', \$stdout, '2>', \$stderr; + my $result = run [ $cmd, '--help' ], '>', \$stdout, '2>', \$stderr; ok($result, "$cmd --help exit code 0"); isnt($stdout, '', "$cmd --help goes to stdout"); is($stderr, '', "$cmd --help nothing to stderr"); }; } -sub program_version_ok { +sub program_version_ok +{ my ($cmd) = @_; subtest "$cmd --version" => sub { plan tests => 3; my ($stdout, $stderr); - my $result = run [$cmd, '--version'], '>', \$stdout, '2>', \$stderr; + my $result = run [ $cmd, '--version' ], '>', \$stdout, '2>', \$stderr; ok($result, "$cmd --version exit code 0"); isnt($stdout, '', "$cmd --version goes to stdout"); is($stderr, '', "$cmd --version nothing to stderr"); }; } -sub program_options_handling_ok { +sub program_options_handling_ok +{ my ($cmd) = @_; subtest "$cmd options handling" => sub { plan tests => 2; my ($stdout, $stderr); - my $result = run [$cmd, '--not-a-valid-option'], '>', \$stdout, '2>', \$stderr; + my $result = run [ $cmd, '--not-a-valid-option' ], '>', \$stdout, + '2>', \$stderr; ok(!$result, "$cmd with invalid option nonzero exit code"); isnt($stderr, '', "$cmd with invalid option prints error message"); }; } -sub command_like { +sub command_like +{ my ($cmd, $expected_stdout, $test_name) = @_; subtest $test_name => sub { plan tests => 3; @@ -170,7 +198,8 @@ sub command_like { }; } -sub issues_sql_like { +sub issues_sql_like +{ my ($cmd, $expected_sql, $test_name) = @_; subtest $test_name => sub { plan tests => 2; |