]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Ignore more environment variables in TAP tests
authorMichael Paquier <michael@paquier.xyz>
Thu, 3 Jun 2021 02:51:05 +0000 (11:51 +0900)
committerMichael Paquier <michael@paquier.xyz>
Thu, 3 Jun 2021 02:51:05 +0000 (11:51 +0900)
Various environment variables were not getting reset in the TAP tests,
which would cause failures depending on the tests or the environment
variables involved.  For example, PGSSL{MAX,MIN}PROTOCOLVERSION could
cause failures in the SSL tests.  Even worse, a junk value of
PGCLIENTENCODING makes a server startup fail.  The list of variables
reset is adjusted in each stable branch depending on what is supported.

While on it, simplify a bit the code per a suggestion from Andrew
Dunstan, using a list of variables instead of doing single deletions.

Reviewed-by: Andrew Dunstan, Daniel Gustafsson
Discussion: https://postgr.es/m/YLbjjRpucIeZ78VQ@paquier.xyz
Backpatch-through: 9.6

src/test/perl/TestLib.pm

index fecc6733da66cdfcadaa756b680f008912275bc9..0c1712ab50cf800d45aaff06b9c449b862d38e91 100644 (file)
@@ -98,17 +98,37 @@ BEGIN
        delete $ENV{LC_ALL};
        $ENV{LC_MESSAGES} = 'C';
 
-       delete $ENV{PGCONNECT_TIMEOUT};
-       delete $ENV{PGDATA};
-       delete $ENV{PGDATABASE};
-       delete $ENV{PGHOSTADDR};
-       delete $ENV{PGREQUIRESSL};
-       delete $ENV{PGSERVICE};
-       delete $ENV{PGSSLMODE};
-       delete $ENV{PGUSER};
-       delete $ENV{PGPORT};
-       delete $ENV{PGHOST};
-       delete $ENV{PG_COLOR};
+       my @envkeys = qw (
+         PGCHANNELBINDING
+         PGCLIENTENCODING
+         PGCONNECT_TIMEOUT
+         PGDATA
+         PGDATABASE
+         PGGSSENCMODE
+         PGGSSLIB
+         PGHOSTADDR
+         PGKRBSRVNAME
+         PGPASSFILE
+         PGPASSWORD
+         PGREQUIREPEER
+         PGREQUIRESSL
+         PGSERVICE
+         PGSERVICEFILE
+         PGSSLCERT
+         PGSSLCRL
+         PGSSLCRLDIR
+         PGSSLKEY
+         PGSSLMAXPROTOCOLVERSION
+         PGSSLMINPROTOCOLVERSION
+         PGSSLMODE
+         PGSSLROOTCERT
+         PGTARGETSESSIONATTRS
+         PGUSER
+         PGPORT
+         PGHOST
+         PG_COLOR
+       );
+       delete @ENV{@envkeys};
 
        $ENV{PGAPPNAME} = basename($0);