Ignore more environment variables in TAP tests
authorMichael Paquier <michael@paquier.xyz>
Thu, 3 Jun 2021 02:51:47 +0000 (11:51 +0900)
committerMichael Paquier <michael@paquier.xyz>
Thu, 3 Jun 2021 02:51:47 +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 63975db5e76cc8d5c1ca86201ace571095110923..28e91e56092a937682b8bc773a9bafdb46f4566e 100644 (file)
@@ -63,17 +63,34 @@ 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 (
+     PGCLIENTENCODING
+     PGCONNECT_TIMEOUT
+     PGDATA
+     PGDATABASE
+     PGGSSENCMODE
+     PGGSSLIB
+     PGHOSTADDR
+     PGKRBSRVNAME
+     PGPASSFILE
+     PGPASSWORD
+     PGREQUIREPEER
+     PGREQUIRESSL
+     PGSERVICE
+     PGSERVICEFILE
+     PGSSLCERT
+     PGSSLCRL
+     PGSSLCRLDIR
+     PGSSLKEY
+     PGSSLMODE
+     PGSSLROOTCERT
+     PGTARGETSESSIONATTRS
+     PGUSER
+     PGPORT
+     PGHOST
+     PG_COLOR
+   );
+   delete @ENV{@envkeys};
 
    $ENV{PGAPPNAME} = basename($0);