When the pg_dump 002_pg_dump.pl test generates the command to load the schema, it does

    # Add terminating semicolon
    $create_sql{$test_db} .= $tests{$test}->{create_sql} . ";";

In some cases, this creates a duplicate semicolon, but more importantly, this doesn't add any newline. So if you look at the result in either the server log or in tmp_check/log/regress_log_002_pg_dump, it looks like a complete mess. The attached patch makes the output look cleaner for manual inspection: add semicolon only if necessary, and add two newlines.
From 28e70332050e81c3faebc1bd0fe31e5863adcb78 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Sat, 22 Oct 2022 12:29:26 +0200
Subject: [PATCH] pg_dump test: Make concatenated create_sql commands more
 readable

---
 src/bin/pg_dump/t/002_pg_dump.pl | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/bin/pg_dump/t/002_pg_dump.pl b/src/bin/pg_dump/t/002_pg_dump.pl
index a869321cdfc3..5df5a0ad59ef 100644
--- a/src/bin/pg_dump/t/002_pg_dump.pl
+++ b/src/bin/pg_dump/t/002_pg_dump.pl
@@ -3984,8 +3984,12 @@
                        next;
                }
 
-               # Add terminating semicolon
-               $create_sql{$test_db} .= $tests{$test}->{create_sql} . ";";
+               # Normalize command ending: strip all line endings, add
+               # semicolon if missing, add two newlines.
+               my $create_sql = $tests{$test}->{create_sql};
+               chomp $create_sql;
+               $create_sql .= ';' unless substr($create_sql, -1) eq ';';
+               $create_sql{$test_db} .= $create_sql . "\n\n";
        }
 }
 
-- 
2.37.3

Reply via email to