Fix locale-dependent test case.
authorTom Lane <[email protected]>
Fri, 7 Apr 2023 14:35:11 +0000 (10:35 -0400)
committerTom Lane <[email protected]>
Fri, 7 Apr 2023 14:35:11 +0000 (10:35 -0400)
psql parses the interval argument of \watch with locale-dependent
strtod().  In commit 00beecfe8 I added a test case that exercises
a fractional interval, but I hard-coded 0.01 which doesn't work
in locales where the radix point isn't ".".  We don't want to
change this longstanding parsing behavior, so fix the test case
to generate a suitably locale-aware spelling.

Report and patch by Alexander Korotkov.

Discussion: https://postgr.es/m/CAPpHfdv+10Uk6FWjsh3+ju7kHYr76LaRXbYayXmrM7FBU-=Hgg@mail.gmail.com

src/bin/psql/t/001_basic.pl

index 56b1e3e4a6fa925e4575f854142053cbc9f3097b..596746de178af9e6c8eef870ea66c07a05702e95 100644 (file)
@@ -3,6 +3,7 @@
 
 use strict;
 use warnings;
+use locale;
 
 use PostgreSQL::Test::Cluster;
 use PostgreSQL::Test::Utils;
@@ -351,9 +352,10 @@ psql_like(
 );
 
 # Check \watch
+# Note: the interval value is parsed with locale-aware strtod()
 psql_like(
    $node,
-   'SELECT 1 \watch c=3 i=0.01',
+   sprintf('SELECT 1 \watch c=3 i=%g', 0.01),
    qr/1\n1\n1/,
    '\watch with 3 iterations');