summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut2024-01-13 19:29:01 +0000
committerPeter Eisentraut2024-01-13 19:32:18 +0000
commit6a3631e251d1390673aee469c0cd672cac6195ef (patch)
treec2c3ec46ab7e9f0532e423d04ad916d84e2cb807
parent36578fa049421429c99bc9a0f06344dc8b4b5152 (diff)
Escape output of pg_amcheck test
The pg_amcheck test reports a skip message if the layout of the index does not match expectations. That message includes the bytes that were expected and the ones that were found. But the found ones are arbitrary bytes, which can have funny effects on the terminal when they are printed. To avoid that, escape non-word characters before printing. Reviewed-by: Aleksander Alekseev <[email protected]> Discussion: https://www.postgresql.org/message-id/flat/3f96f079-64e5-468a-8a19-cb481f0d31e5%40eisentraut.org
-rw-r--r--src/bin/pg_amcheck/t/004_verify_heapam.pl7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/bin/pg_amcheck/t/004_verify_heapam.pl b/src/bin/pg_amcheck/t/004_verify_heapam.pl
index 8c796ed2218..f6d2c5f7877 100644
--- a/src/bin/pg_amcheck/t/004_verify_heapam.pl
+++ b/src/bin/pg_amcheck/t/004_verify_heapam.pl
@@ -367,10 +367,11 @@ for (my $tupidx = 0; $tupidx < $ROWCOUNT; $tupidx++)
{
close($file); # ignore errors on close; we're exiting anyway
$node->clean_node;
- plan skip_all =>
- sprintf(
+ plan skip_all => sprintf(
"Page layout of index %d differs from our expectations: expected (%x, %x, \"%s\"), got (%x, %x, \"%s\")",
- $tupidx, 0xDEADF9F9, 0xDEADF9F9, "abcdefg", $a_1, $a_2, $b);
+ $tupidx, 0xDEADF9F9, 0xDEADF9F9, "abcdefg", $a_1, $a_2,
+ # escape non-word characters to avoid confusing the terminal
+ $b =~ s{(\W)}{ sprintf '\x%02x', ord($1) }aegr);
exit;
}