aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bin/psql/t/001_basic.pl52
1 files changed, 45 insertions, 7 deletions
diff --git a/src/bin/psql/t/001_basic.pl b/src/bin/psql/t/001_basic.pl
index 685744744a9..eb9041d1f33 100644
--- a/src/bin/psql/t/001_basic.pl
+++ b/src/bin/psql/t/001_basic.pl
@@ -15,10 +15,46 @@ program_options_handling_ok('psql');
my ($stdout, $stderr);
my $result;
+# Execute a psql command and check its result patterns.
+sub psql_like
+{
+ local $Test::Builder::Level = $Test::Builder::Level + 1;
+
+ my $node = shift;
+ my $test_name = shift;
+ my $query = shift;
+ my $expected_stdout = shift;
+ my $expected_stderr = shift;
+
+ die "cannot specify both expected stdout and stderr here"
+ if (defined($expected_stdout) && defined($expected_stderr));
+
+ # Use the context of a WAL sender, some of the tests rely on that.
+ my ($ret, $stdout, $stderr) = $node->psql(
+ 'postgres', $query,
+ on_error_die => 0,
+ replication => 'database');
+
+ if (defined($expected_stdout))
+ {
+ is($ret, 0, "$test_name: expected result code");
+ is($stderr, '', "$test_name: no stderr");
+ like($stdout, $expected_stdout, "$test_name: stdout matches");
+ }
+ if (defined($expected_stderr))
+ {
+ isnt($ret, 0, "$test_name: expected result code");
+ like($stderr, $expected_stderr, "$test_name: stderr matches");
+ }
+
+ return;
+}
+
# test --help=foo, analogous to program_help_ok()
foreach my $arg (qw(commands variables))
{
- $result = IPC::Run::run [ 'psql', "--help=$arg" ], '>', \$stdout, '2>', \$stderr;
+ $result = IPC::Run::run [ 'psql', "--help=$arg" ], '>', \$stdout, '2>',
+ \$stderr;
ok($result, "psql --help=$arg exit code 0");
isnt($stdout, '', "psql --help=$arg goes to stdout");
is($stderr, '', "psql --help=$arg nothing to stderr");
@@ -34,11 +70,13 @@ max_wal_senders = 4
});
$node->start;
-$node->command_like([ 'psql', '-c', '\copyright' ], qr/Copyright/, '\copyright');
-$node->command_like([ 'psql', '-c', '\help' ], qr/ALTER/, '\help without arguments');
-$node->command_like([ 'psql', '-c', '\help SELECT' ], qr/SELECT/, '\help');
-
+psql_like($node, '\copyright', '\copyright', qr/Copyright/, undef);
+psql_like($node, '\help without arguments', '\help', qr/ALTER/, undef);
+psql_like($node, '\help with argument', '\help SELECT', qr/SELECT/, undef);
# Test clean handling of unsupported replication command responses
-$node->command_fails_like([ 'psql', '-d', 'replication=database', '-c', 'START_REPLICATION 0/0' ],
- qr/^unexpected PQresultStatus: 8$/, 'handling of unexpected PQresultStatus');
+psql_like(
+ $node,
+ 'handling of unexpected PQresultStatus',
+ 'START_REPLICATION 0/0',
+ undef, qr/unexpected PQresultStatus: 8$/);