On 2017-03-23 03:28, Michael Paquier wrote:
On Thu, Mar 23, 2017 at 12:51 AM, Erik Rijkers <e...@xs4all.nl> wrote:
While trying to test pgbench's stderr (looking for 'creating tables'
in
output of the initialisation step) I ran into these two bugs (or
perhaps
better 'oversights').
+ if (defined $expected_stderr) {
+ like($stderr, $expected_stderr, "$test_name: stderr matches");
+ }
+ else {
is($stderr, '', "$test_name: no stderr");
- like($stdout, $expected_stdout, "$test_name: matches");
+ }
To simplify that you could as well set expected_output to be an empty
string, and just use like() instead of is(), saving this if/else.
(I'll assume you meant '$expected_stderr' (not 'expected_output'))
That would be nice but with that, other tests start complaining:
"doesn't look like a regex to me"
To avoid that, I uglified your version back to:
+ like($stderr, (defined $expected_stderr ? $expected_stderr :
qr{}),
+ "$test_name: stderr matches");
I did it like that in the attached patch
(0001-testlib-like-stderr.diff).
The other (PostgresNode.pm.diff) is unchanged.
make check-world without error.
Thanks,
Erik Rijkers
--- src/test/perl/TestLib.pm.orig 2017-03-23 08:11:16.034410936 +0100
+++ src/test/perl/TestLib.pm 2017-03-23 08:12:33.154132124 +0100
@@ -289,13 +289,14 @@
sub command_like
{
- my ($cmd, $expected_stdout, $test_name) = @_;
+ my ($cmd, $expected_stdout, $test_name, $expected_stderr) = @_;
my ($stdout, $stderr);
print("# Running: " . join(" ", @{$cmd}) . "\n");
my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr;
ok($result, "$test_name: exit code 0");
- is($stderr, '', "$test_name: no stderr");
- like($stdout, $expected_stdout, "$test_name: matches");
+ like($stderr, (defined $expected_stderr ? $expected_stderr : qr{}),
+ "$test_name: stderr matches");
+ like($stdout, $expected_stdout, "$test_name: stdout matches");
}
sub command_fails_like
--- src/test/perl/PostgresNode.pm.orig 2017-03-22 15:58:58.690052999 +0100
+++ src/test/perl/PostgresNode.pm 2017-03-22 15:49:38.422777312 +0100
@@ -1283,6 +1283,23 @@
=pod
+=item $node->command_fails_like(...) - TestLib::command_fails_like with our PGPORT
+
+See command_ok(...)
+
+=cut
+
+sub command_fails_like
+{
+ my $self = shift;
+
+ local $ENV{PGPORT} = $self->port;
+
+ TestLib::command_fails_like(@_);
+}
+
+=pod
+
=item $node->issues_sql_like(cmd, expected_sql, test_name)
Run a command on the node, then verify that $expected_sql appears in the
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers