diff options
-rw-r--r-- | src/bin/pg_combinebackup/t/002_compare_backups.pl | 19 | ||||
-rw-r--r-- | src/bin/pg_upgrade/t/002_pg_upgrade.pl | 22 | ||||
-rw-r--r-- | src/test/perl/PostgreSQL/Test/Utils.pm | 41 | ||||
-rw-r--r-- | src/test/recovery/t/027_stream_regress.pl | 14 |
4 files changed, 53 insertions, 43 deletions
diff --git a/src/bin/pg_combinebackup/t/002_compare_backups.pl b/src/bin/pg_combinebackup/t/002_compare_backups.pl index ebd68bfb850..2c7ca89b92f 100644 --- a/src/bin/pg_combinebackup/t/002_compare_backups.pl +++ b/src/bin/pg_combinebackup/t/002_compare_backups.pl @@ -192,27 +192,12 @@ $pitr2->command_ok( # Compare the two dumps, there should be no differences other than # the tablespace paths. -my $compare_res = compare_text( +compare_files( $dump1, $dump2, + "contents of dumps match for both PITRs", sub { s{create tablespace .* location .*\btspitr\K[12]}{N}i for @_; return $_[0] ne $_[1]; }); -note($dump1); -note($dump2); -is($compare_res, 0, "dumps are identical"); - -# Provide more context if the dumps do not match. -if ($compare_res != 0) -{ - my ($stdout, $stderr) = - run_command([ 'diff', '-u', $dump1, $dump2 ]); - print "=== diff of $dump1 and $dump2\n"; - print "=== stdout ===\n"; - print $stdout; - print "=== stderr ===\n"; - print $stderr; - print "=== EOF ===\n"; -} done_testing(); diff --git a/src/bin/pg_upgrade/t/002_pg_upgrade.pl b/src/bin/pg_upgrade/t/002_pg_upgrade.pl index e49bff6454a..68516fa486a 100644 --- a/src/bin/pg_upgrade/t/002_pg_upgrade.pl +++ b/src/bin/pg_upgrade/t/002_pg_upgrade.pl @@ -6,9 +6,8 @@ use warnings FATAL => 'all'; use Cwd qw(abs_path); use File::Basename qw(dirname); -use File::Compare; -use File::Find qw(find); -use File::Path qw(rmtree); +use File::Find qw(find); +use File::Path qw(rmtree); use PostgreSQL::Test::Cluster; use PostgreSQL::Test::Utils; @@ -515,20 +514,7 @@ my $dump1_filtered = filter_dump(1, $oldnode->pg_version, $dump1_file); my $dump2_filtered = filter_dump(0, $oldnode->pg_version, $dump2_file); # Compare the two dumps, there should be no differences. -my $compare_res = compare($dump1_filtered, $dump2_filtered); -is($compare_res, 0, 'old and new dumps match after pg_upgrade'); - -# Provide more context if the dumps do not match. -if ($compare_res != 0) -{ - my ($stdout, $stderr) = - run_command([ 'diff', '-u', $dump1_filtered, $dump2_filtered ]); - print "=== diff of $dump1_filtered and $dump2_filtered\n"; - print "=== stdout ===\n"; - print $stdout; - print "=== stderr ===\n"; - print $stderr; - print "=== EOF ===\n"; -} +compare_files($dump1_filtered, $dump2_filtered, + 'old and new dumps match after pg_upgrade'); done_testing(); 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. |