]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t/lib-httpd: pass PERL_PATH to CGI scripts
authorJeff King <peff@peff.net>
Thu, 6 Apr 2023 09:36:02 +0000 (05:36 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 6 Apr 2023 16:29:43 +0000 (09:29 -0700)
As discussed in t/README, tests should aim to use PERL_PATH rather than
straight "perl". We usually do this automatically with a "perl" function
in test-lib.sh, but a few cases need to be handled specially.

One such case is the apply-one-time-perl.sh CGI, which invokes plain
"perl". It should be using $PERL_PATH, but to make that work, we must
also instruct Apache to pass through the variable.

Prior to this patch, doing:

  mv /usr/bin/perl /usr/bin/my-perl
  make PERL_PATH=/usr/bin/my-perl test

would fail t5702, t5703, and t5616. After this it passes. This is a
pretty extreme case, as even if you install perl elsewhere, you'd likely
still have it in your $PATH. A more realistic case is that you don't
want to use the perl in your $PATH (because it's older, broken, etc) and
expect PERL_PATH to consistently override that (since that's what it's
documented to do). Removing it completely is just a convenient way of
completely breaking it for testing purposes.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/lib-httpd/apache.conf
t/lib-httpd/apply-one-time-perl.sh

index 706799391bd4047a1c15f8a32f77875cb8dcb44d..f8946a289daebe436a6792bb144c4fbc34981f02 100644 (file)
@@ -86,6 +86,8 @@ PassEnv LC_ALL
 Alias /dumb/ www/
 Alias /auth/dumb/ www/auth/dumb/
 
+SetEnv PERL_PATH ${PERL_PATH}
+
 <LocationMatch /smart/>
        SetEnv GIT_EXEC_PATH ${GIT_EXEC_PATH}
        SetEnv GIT_HTTP_EXPORT_ALL
index 09a0abdff7c4775f5ba5fd50f5753b3aed35d60b..d7f9fed6aee8b2a8a665f74507fc1ae41065d22f 100644 (file)
@@ -13,7 +13,7 @@ then
        export LC_ALL
 
        "$GIT_EXEC_PATH/git-http-backend" >out
-       perl -pe "$(cat one-time-perl)" out >out_modified
+       "$PERL_PATH" -pe "$(cat one-time-perl)" out >out_modified
 
        if cmp -s out out_modified
        then