]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t: refactor environment sanitization to not use Perl
authorPatrick Steinhardt <ps@pks.im>
Thu, 3 Apr 2025 05:05:53 +0000 (07:05 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 7 Apr 2025 21:47:36 +0000 (14:47 -0700)
Before executing tests we first sanitize the environment. Part of the
sanitization is to unset a couple of environment variables that we know
will change the behaviour of Git. This is done with a small Perl script,
which has the consequence that having a Perl interpreter available is a
strict requirement for running our unit tests.

The logic itself isn't particularly involved: we simply unset every
environment variable whose key starts with 'GIT_', but then explicitly
allow a subset of these.

Refactor the logic to instead use sed(1) so that it becomes possible to
execute our tests without Perl.

Based-on-patch-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/test-lib.sh

index 1ce3b32fcac941df2a722f31f32db2b292c163ff..a62699d6c79a9b5016e3997754ff60d827725ca3 100644 (file)
@@ -499,24 +499,20 @@ EDITOR=:
 # /usr/xpg4/bin/sh and /bin/ksh to bail out.  So keep the unsets
 # deriving from the command substitution clustered with the other
 # ones.
-unset VISUAL EMAIL LANGUAGE $("$PERL_PATH" -e '
-       my @env = keys %ENV;
-       my $ok = join("|", qw(
-               TRACE
-               DEBUG
-               TEST
-               .*_TEST
-               PROVE
-               VALGRIND
-               UNZIP
-               PERF_
-               CURL_VERBOSE
-               TRACE_CURL
-               BUILD_DIR
-       ));
-       my @vars = grep(/^GIT_/ && !/^GIT_($ok)/o, @env);
-       print join("\n", @vars);
-')
+unset VISUAL EMAIL LANGUAGE $(env | sed -n \
+       -e '/^GIT_TRACE/d' \
+       -e '/^GIT_DEBUG/d' \
+       -e '/^GIT_TEST/d' \
+       -e '/^GIT_.*_TEST/d' \
+       -e '/^GIT_PROVE/d' \
+       -e '/^GIT_VALGRIND/d' \
+       -e '/^GIT_UNZIP/d' \
+       -e '/^GIT_PERF_/d' \
+       -e '/^GIT_CURL_VERBOSE/d' \
+       -e '/^GIT_TRACE_CURL/d' \
+       -e '/^GIT_BUILD_DIR/d' \
+       -e 's/^\(GIT_[^=]*\)=.*/\1/p'
+)
 unset XDG_CACHE_HOME
 unset XDG_CONFIG_HOME
 unset GITPERLLIB