Patrick Steinhardt <ps@xxxxxx> writes: > 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@xxxxxx> > Signed-off-by: Patrick Steinhardt <ps@xxxxxx> > --- > t/test-lib.sh | 32 ++++++++++++++------------------ > 1 file changed, 14 insertions(+), 18 deletions(-) > > diff --git a/t/test-lib.sh b/t/test-lib.sh > index 1ce3b32fcac..a62699d6c79 100644 > --- a/t/test-lib.sh > +++ b/t/test-lib.sh > @@ -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' \ So we delete all of the following from the stream of env. > + -e 's/^\(GIT_[^=]*\)=.*/\1/p' But any other `GIT_*` env variable is printed to be `unset`. Ok makes sense. This is much more readable than the perl version! > +) > unset XDG_CACHE_HOME > unset XDG_CONFIG_HOME > unset GITPERLLIB > > -- > 2.49.0.472.ge94155a9ec.dirty
Attachment:
signature.asc
Description: PGP signature