diff options
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/perl/PostgreSQL/Test/Utils.pm | 41 | ||||
| -rw-r--r-- | src/test/recovery/t/027_stream_regress.pl | 14 |
2 files changed, 47 insertions, 8 deletions
diff --git a/src/test/perl/PostgreSQL/Test/Utils.pm b/src/test/perl/PostgreSQL/Test/Utils.pm index 9c83d93f79f..efe0321a4ef 100644 --- a/src/test/perl/PostgreSQL/Test/Utils.pm +++ b/src/test/perl/PostgreSQL/Test/Utils.pm @@ -50,6 +50,7 @@ use Cwd; use Exporter 'import'; use Fcntl qw(:mode :seek); use File::Basename; +use File::Compare; use File::Find; use File::Spec; use File::stat qw(stat); @@ -70,6 +71,7 @@ our @EXPORT = qw( check_mode_recursive chmod_recursive check_pg_config + compare_files dir_symlink scan_server_header system_or_bail @@ -773,6 +775,45 @@ sub check_pg_config =pod +=item compare_files(file1, file2, testname) + +Check that two files match, printing the difference if any. + +C<line_comp_function> is an optional CODE reference to a line comparison +function, passed down as-is to File::Compare::compare_text. + +=cut + +sub compare_files +{ + my ($file1, $file2, $testname, $line_comp_function) = @_; + + # If nothing is given, all lines should be equal. + $line_comp_function = sub { $_[0] ne $_[1] } + unless defined $line_comp_function; + + my $compare_res = + File::Compare::compare_text($file1, $file2, $line_comp_function); + is($compare_res, 0, $testname); + + # Provide more context if the files do not match. + if ($compare_res != 0) + { + my ($stdout, $stderr) = + run_command([ 'diff', '-u', $file1, $file2 ]); + print "=== diff of $file1 and $file2\n"; + print "=== stdout ===\n"; + print $stdout; + print "=== stderr ===\n"; + print $stderr; + print "=== EOF ===\n"; + } + + return; +} + +=pod + =item dir_symlink(oldname, newname) Portably create a symlink for a directory. On Windows this creates a junction diff --git a/src/test/recovery/t/027_stream_regress.pl b/src/test/recovery/t/027_stream_regress.pl index bab7b28084b..0eac8f66a9c 100644 --- a/src/test/recovery/t/027_stream_regress.pl +++ b/src/test/recovery/t/027_stream_regress.pl @@ -120,8 +120,9 @@ command_ok( '--port' => $node_standby_1->port, ], 'dump standby server'); -command_ok( - [ 'diff', $outputdir . '/primary.dump', $outputdir . '/standby.dump', ], +compare_files( + $outputdir . '/primary.dump', + $outputdir . '/standby.dump', 'compare primary and standby dumps'); # Likewise for the catalogs of the regression database, after disabling @@ -150,12 +151,9 @@ command_ok( 'regression', ], 'dump catalogs of standby server'); -command_ok( - [ - 'diff', - $outputdir . '/catalogs_primary.dump', - $outputdir . '/catalogs_standby.dump', - ], +compare_files( + $outputdir . '/catalogs_primary.dump', + $outputdir . '/catalogs_standby.dump', 'compare primary and standby catalog dumps'); # Check some data from pg_stat_statements. |
