> On 02 Nov 2016, at 19:20, Jeff King <peff@xxxxxxxx> wrote: > > The rot13-filter.pl script hardcodes "#!/usr/bin/perl", and > does not respect $PERL_PATH at all. That is a problem if the > system does not have perl at that path, or if it has a perl > that is too old to run a complicated script like the > rot13-filter (but PERL_PATH points to a more modern one). > > We can fix this by using write_script() to create a new copy > of the script with the correct #!-line. In theory we could > move the whole script inside t0021-conversion.sh rather than > having it as an auxiliary file, but it's long enough that > it just makes things harder to read. > > As a bonus, we can stop using the full path to the script in > the filter-process config we add (because the trash > directory is in our PATH). Not only is this shorter, but it > sidesteps any shell-quoting issues. The original was broken > when $TEST_DIRECTORY contained a space, because it was > interpolated in the outer script. > > Signed-off-by: Jeff King <peff@xxxxxxxx> > --- > t/t0021-conversion.sh | 19 +++++++++++-------- > t/t0021/rot13-filter.pl | 1 - > 2 files changed, 11 insertions(+), 9 deletions(-) > mode change 100755 => 100644 t/t0021/rot13-filter.pl > > diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh > index c1ad20c61..a8fa52148 100755 > --- a/t/t0021-conversion.sh > +++ b/t/t0021-conversion.sh > @@ -13,6 +13,9 @@ tr \ > 'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM' > EOF > > +write_script rot13-filter.pl "$PERL_PATH" \ > + <"$TEST_DIRECTORY"/t0021/rot13-filter.pl > + > generate_random_characters () { > LEN=$1 > NAME=$2 > @@ -341,7 +344,7 @@ test_expect_success 'diff does not reuse worktree files that need cleaning' ' > ' > > test_expect_success PERL 'required process filter should filter data' ' > - test_config_global filter.protocol.process "$TEST_DIRECTORY/t0021/rot13-filter.pl clean smudge" && > + test_config_global filter.protocol.process "rot13-filter.pl clean smudge" && > test_config_global filter.protocol.required true && > rm -rf repo && > mkdir repo && > @@ -434,7 +437,7 @@ test_expect_success PERL 'required process filter should filter data' ' > > test_expect_success PERL 'required process filter takes precedence' ' > test_config_global filter.protocol.clean false && > - test_config_global filter.protocol.process "$TEST_DIRECTORY/t0021/rot13-filter.pl clean" && > + test_config_global filter.protocol.process "rot13-filter.pl clean" && > test_config_global filter.protocol.required true && > rm -rf repo && > mkdir repo && > @@ -459,7 +462,7 @@ test_expect_success PERL 'required process filter takes precedence' ' > ' > > test_expect_success PERL 'required process filter should be used only for "clean" operation only' ' > - test_config_global filter.protocol.process "$TEST_DIRECTORY/t0021/rot13-filter.pl clean" && > + test_config_global filter.protocol.process "rot13-filter.pl clean" && > rm -rf repo && > mkdir repo && > ( > @@ -494,7 +497,7 @@ test_expect_success PERL 'required process filter should be used only for "clean > ' > > test_expect_success PERL 'required process filter should process multiple packets' ' > - test_config_global filter.protocol.process "$TEST_DIRECTORY/t0021/rot13-filter.pl clean smudge" && > + test_config_global filter.protocol.process "rot13-filter.pl clean smudge" && > test_config_global filter.protocol.required true && > > rm -rf repo && > @@ -554,7 +557,7 @@ test_expect_success PERL 'required process filter should process multiple packet > ' > > test_expect_success PERL 'required process filter with clean error should fail' ' > - test_config_global filter.protocol.process "$TEST_DIRECTORY/t0021/rot13-filter.pl clean smudge" && > + test_config_global filter.protocol.process "rot13-filter.pl clean smudge" && > test_config_global filter.protocol.required true && > rm -rf repo && > mkdir repo && > @@ -573,7 +576,7 @@ test_expect_success PERL 'required process filter with clean error should fail' > ' > > test_expect_success PERL 'process filter should restart after unexpected write failure' ' > - test_config_global filter.protocol.process "$TEST_DIRECTORY/t0021/rot13-filter.pl clean smudge" && > + test_config_global filter.protocol.process "rot13-filter.pl clean smudge" && > rm -rf repo && > mkdir repo && > ( > @@ -624,7 +627,7 @@ test_expect_success PERL 'process filter should restart after unexpected write f > ' > > test_expect_success PERL 'process filter should not be restarted if it signals an error' ' > - test_config_global filter.protocol.process "$TEST_DIRECTORY/t0021/rot13-filter.pl clean smudge" && > + test_config_global filter.protocol.process "rot13-filter.pl clean smudge" && > rm -rf repo && > mkdir repo && > ( > @@ -663,7 +666,7 @@ test_expect_success PERL 'process filter should not be restarted if it signals a > ' > > test_expect_success PERL 'process filter abort stops processing of all further files' ' > - test_config_global filter.protocol.process "$TEST_DIRECTORY/t0021/rot13-filter.pl clean smudge" && > + test_config_global filter.protocol.process "rot13-filter.pl clean smudge" && > rm -rf repo && > mkdir repo && > ( > diff --git a/t/t0021/rot13-filter.pl b/t/t0021/rot13-filter.pl > old mode 100755 > new mode 100644 > index ae4c50f5c..e3ea58e1e > --- a/t/t0021/rot13-filter.pl > +++ b/t/t0021/rot13-filter.pl > @@ -1,4 +1,3 @@ > -#!/usr/bin/perl > # > # Example implementation for the Git filter protocol version 2 > # See Documentation/gitattributes.txt, section "Filter Protocol" > -- > 2.11.0.rc0.258.gf434c15 Looks good to me! Minor pedantic nit: Would it make sense to rename "rot13-filter.pl" to "rot13-filter.pl.template" or something because of the missing shebang? - Lars