pg_dump test: Make concatenated create_sql commands more readable
authorPeter Eisentraut <[email protected]>
Mon, 31 Oct 2022 12:59:57 +0000 (13:59 +0100)
committerPeter Eisentraut <[email protected]>
Mon, 31 Oct 2022 13:19:08 +0000 (14:19 +0100)
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.
This patch makes the output look cleaner for manual inspection: add
semicolon only if necessary, and add two newlines.

Discussion: https://www.postgresql.org/message-id/flat/d6aec95a-8729-43cc-2578-f2a5e46640e0%40enterprisedb.com

src/bin/pg_dump/t/002_pg_dump.pl

index a869321cdfc3fc2b4b91082d5a91d891f506b0bd..5df5a0ad59effe387c34f3b3665a7972cbebf369 100644 (file)
@@ -3984,8 +3984,12 @@ foreach my $test (
            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";
    }
 }