psql: More tests
authorPeter Eisentraut <[email protected]>
Tue, 12 Oct 2021 07:45:57 +0000 (09:45 +0200)
committerPeter Eisentraut <[email protected]>
Tue, 12 Oct 2021 07:55:07 +0000 (09:55 +0200)
Add some basic tests for command-line option handling and help output,
similar to what we have for other command-line programs.  This also
creates a place to put some more one-off test cases later.

Discussion: https://www.postgresql.org/message-id/2570e2ae-fa0f-aac9-f72f-bb59a9983a20@enterprisedb.com

src/bin/psql/t/001_basic.pl [new file with mode: 0644]

diff --git a/src/bin/psql/t/001_basic.pl b/src/bin/psql/t/001_basic.pl
new file mode 100644 (file)
index 0000000..38426a6
--- /dev/null
@@ -0,0 +1,33 @@
+
+# Copyright (c) 2021, PostgreSQL Global Development Group
+
+use strict;
+use warnings;
+
+use PostgresNode;
+use TestLib;
+use Test::More tests => 23;
+
+program_help_ok('psql');
+program_version_ok('psql');
+program_options_handling_ok('psql');
+
+my ($stdout, $stderr);
+my $result;
+
+# test --help=foo, analogous to program_help_ok()
+foreach my $arg (qw(commands variables))
+{
+   $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");
+}
+
+my $node = PostgresNode->new('main');
+$node->init;
+$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');