001_libpq_pipeline.pl: use Test::Differences if available

When one of these tests fails to match the trace, this better shows what
the problem is.

Discussion: https://postgr.es/m/20220617183150.ilgokxp22mzywnhh@alvherre.pgsql
Reviewed-by: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
This commit is contained in:
Alvaro Herrera 2023-03-08 18:31:55 +01:00
parent 30a53b7929
commit 87e4f24d82
No known key found for this signature in database
GPG Key ID: 1C20ACB9D5C564AE
2 changed files with 17 additions and 1 deletions

View File

@ -1,4 +1,7 @@
Test programs and libraries for libpq
If you have Test::Differences installed, any differences in the trace files
are displayed in a format that's easier to read than the standard format.
=====================================
This module was developed to test libpq's "pipeline" mode, but it can

View File

@ -8,6 +8,19 @@ use PostgreSQL::Test::Cluster;
use PostgreSQL::Test::Utils;
use Test::More;
# Use Test::Differences if installed, and select unified diff output.
# No decent way to select a context line count with this;
# we could use a sub ref to allow that.
BEGIN
{
#<<< protect next line from pgperltidy
if (!eval q{ use Test::Differences; unified_diff(); 1 }) ## no critic (ProhibitStringyEval)
#>>>
{
*eq_or_diff = \&is;
}
}
my $node = PostgreSQL::Test::Cluster->new('main');
$node->init;
$node->start;
@ -55,7 +68,7 @@ for my $testname (@tests)
$result = slurp_file_eval($traceout);
next unless $result ne "";
is($result, $expected, "$testname trace match");
eq_or_diff($result, $expected, "$testname trace match");
}
}