Message ID | 20250327-b4-pks-t-perlless-v3-0-b436de9da1b8@pks.im (mailing list archive) |
---|---|
Headers | show |
Series | t: drop Perl as a mandatory prerequisite | expand |
Hi Patrick On 27/03/2025 10:36, Patrick Steinhardt wrote: > > Changes in v3: > - Remove more useless indirections for sed(1). Thanks for removing these, the range-diff below looks good Best Wishes Phillip > Range-diff versus v2: > > 1: 8c98b24fe4c = 1: f2fe08ef0ff t: skip chain lint when PERL_PATH is unset > 2: f140153954c = 2: 9dd2edd0a1a t: refactor environment sanitization to not use Perl > 3: 94b5591f666 = 3: c77424e6907 t: adapt character translation helpers to not use Perl > 4: a5880fdb8ef = 4: 476d1b15932 t: adapt `test_copy_bytes()` to not use Perl > 5: 3b64c99c061 = 5: 14badee2551 t: adapt `test_readlink()` to not use Perl > 6: a3536260e4c = 6: 9a88a46bd10 t: introduce PERL_TEST_HELPERS prerequisite > 7: 98961b0e065 = 7: e7413bf28ae t: adapt existing PERL prerequisites > 8: bbdd1fe6c7c = 8: 581a9bedd22 meson: stop requiring Perl when tests are enabled > 9: bda7e7922ce = 9: cfe1797ae74 Makefile: stop requiring Perl when running tests > 10: d95d50c4b73 = 10: 99e678b83a6 t: refactor tests depending on Perl transliteration operator > 11: f5b30cc3f8f ! 11: 93a98d3e3cf t: refactor tests depending on Perl substitution operator > @@ t/t4029-diff-trailing-space.sh: test_expect_success PERL_TEST_HELPERS "$test_des > git diff f > actual && > test_cmp exp actual && > - perl -i.bak -p -e "s/^\$/ /" exp && > -+ sed "s/^\$/ /" <exp >exp.munged && > ++ sed "s/^\$/ /" exp >exp.munged && > + mv exp.munged exp && > git config --bool diff.suppressBlankEmpty false && > git diff f > actual && > @@ t/t4200-rerere.sh: test_expect_success 'activate rerere, old style (conflicting > test_must_fail git merge first && > > - sha1=$(perl -pe "s/ .*//" .git/MERGE_RR) && > -+ sha1=$(sed "s/ .*//" <.git/MERGE_RR) && > ++ sha1=$(sed "s/ .*//" .git/MERGE_RR) && > rr=.git/rr-cache/$sha1 && > grep "^=======\$" $rr/preimage && > ! test -f $rr/postimage && > @@ t/t4200-rerere.sh: test_expect_success 'rerere.enabled works, too' ' > test_must_fail git merge first && > > - sha1=$(perl -pe "s/ .*//" .git/MERGE_RR) && > -+ sha1=$(sed "s/ .*//" <.git/MERGE_RR) && > ++ sha1=$(sed "s/ .*//" .git/MERGE_RR) && > rr=.git/rr-cache/$sha1 && > grep ^=======$ $rr/preimage > ' > @@ t/t4200-rerere.sh: test_expect_success 'set up rr-cache' ' > git reset --hard && > test_must_fail git merge first && > - sha1=$(perl -pe "s/ .*//" .git/MERGE_RR) && > -+ sha1=$(sed "s/ .*//" <.git/MERGE_RR) && > ++ sha1=$(sed "s/ .*//" .git/MERGE_RR) && > rr=.git/rr-cache/$sha1 > ' > > @@ t/t5303-pack-corruption-resilience.sh: test_expect_success '... and loose copy o > git prune-packed && > chmod +w ${pack}.pack && > - perl -i.bak -pe "s/ base /abcdef/" ${pack}.pack && > -+ sed "s/ base /abcdef/" <${pack}.pack >${pack}.pack.munged && > ++ sed "s/ base /abcdef/" ${pack}.pack >${pack}.pack.munged && > + mv ${pack}.pack.munged ${pack}.pack && > test_must_fail git cat-file blob $blob_1 > /dev/null && > test_must_fail git cat-file blob $blob_2 > /dev/null && > @@ t/t5303-pack-corruption-resilience.sh: test_expect_success '... and then a repac > git prune-packed && > chmod +w ${pack}.pack && > - perl -i.bak -pe "s/ delta1 /abcdefgh/" ${pack}.pack && > -+ sed "s/ delta1 /abcdefgh/" <${pack}.pack >${pack}.pack.munged && > ++ sed "s/ delta1 /abcdefgh/" ${pack}.pack >${pack}.pack.munged && > + mv ${pack}.pack.munged ${pack}.pack && > git cat-file blob $blob_1 > /dev/null && > test_must_fail git cat-file blob $blob_2 > /dev/null && > @@ t/t5310-pack-bitmaps.sh: test_bitmap_cases () { > # mark the commits which did not receive bitmaps as preferred, > # and generate the bitmap again > - perl -pe "s{^}{create refs/tags/include/$. }" <before | > -+ sed "s|\(.*\)|create refs/tags/include/\1 \1|" <before | > ++ sed "s|\(.*\)|create refs/tags/include/\1 \1|" before | > git update-ref --stdin && > git -c pack.preferBitmapTips=refs/tags/include repack -adb && > > @@ t/t5534-push-signed.sh: test_expect_success GPG,PERL_TEST_HELPERS 'inconsistent > # different, then replay it on a fresh dst, checking that ff is not > # deleted. > - perl -pe "s/([^ ])bar/\$1baz/" push >push.tweak && > -+ sed "s/\([^ ]\)bar/\1baz/" <push >push.tweak && > ++ sed "s/\([^ ]\)bar/\1baz/" push >push.tweak && > prepare_dst && > git -C dst config receive.certnonceseed sekrit && > git -C dst config receive.advertisepushoptions 1 && > @@ t/t6011-rev-list-with-bad-commit.sh: test_expect_success 'verify number of revis > +test_expect_success 'corrupt second commit object' ' > + for p in .git/objects/pack/*.pack > + do > -+ sed "s/second commit/socond commit/" <"$p" >"$p.munged" && > ++ sed "s/second commit/socond commit/" "$p" >"$p.munged" && > + mv "$p.munged" "$p" || > + return 1 > + done && > @@ t/t7416-submodule-dash-url.sh: test_expect_success 'fsck accepts protected dash' > > test_expect_success 'remove ./ protection from .gitmodules url' ' > - perl -i -pe "s{\./}{}" .gitmodules && > -+ sed "s|\./||" <.gitmodules >.gitmodules.munged && > ++ sed "s|\./||" .gitmodules >.gitmodules.munged && > + mv .gitmodules.munged .gitmodules && > git commit -am "drop protection" > ' > @@ t/t8006-blame-textconv.sh: find_blame() { > #!/bin/sh > grep -q '^bin: ' "$1" || { echo "E: $1 is not \"binary\" file" 1>&2; exit 1; } > -"$PERL_PATH" -p -e 's/^bin: /converted: /' "$1" > -+sed 's/^bin: /converted: /' <"$1" > ++sed 's/^bin: /converted: /' "$1" > EOF > chmod +x helper > > @@ t/t9137-git-svn-dcommit-clobber-series.sh: test_expect_success 'initialize repo' > (cd tmp && > - perl -i.bak -p -e "s/^58$/5588/" file && > - perl -i.bak -p -e "s/^61$/6611/" file && > -+ sed -e "s/^58$/5588/" -e "s/^61$/6611/" <file >file.munged && > ++ sed -e "s/^58$/5588/" -e "s/^61$/6611/" file >file.munged && > + mv file.munged file && > poke file && > test x"$(sed -n -e 58p < file)" = x5588 && > @@ t/t9137-git-svn-dcommit-clobber-series.sh: test_expect_success 'some unrelated c > - perl -i.bak -p -e 's/^7\$/7777/' file && > + sed -e 's/^4\$/4444/' \ > + -e 's/^7\$/7777/' \ > -+ <file >file.munged && > ++ file >file.munged && > + mv file.munged file && > test x\"\$(sed -n -e 4p < file)\" = x4444 && > test x\"\$(sed -n -e 7p < file)\" = x7777 && > 12: e978d8ecfde ! 12: 17f862eaba3 t: refactor tests depending on Perl to print data > @@ t/t5300-pack-object.sh: test_expect_success 'pack-object <stdin parsing: --stdin > # e.g.: check_deltas stderr -gt 0 > check_deltas() { > - deltas=$(perl -lne '/delta (\d+)/ and print $1' "$1") && > -+ deltas=$(sed -n 's/Total [0-9][0-9]* (delta \([0-9][0-9]*\)).*/\1/p' <"$1") && > ++ deltas=$(sed -n 's/Total [0-9][0-9]* (delta \([0-9][0-9]*\)).*/\1/p' "$1") && > shift && > if ! test "$deltas" "$@" > then > @@ t/t5326-multi-pack-bitmaps.sh: test_midx_bitmap_cases () { > > - perl -ne "printf(\"create refs/tags/include/%d \", $.); print" \ > - <before | git update-ref --stdin && > -+ sed "s|\(.*\)|create refs/tags/include/\1 \1|" <before | > ++ sed "s|\(.*\)|create refs/tags/include/\1 \1|" before | > + git update-ref --stdin && > > rm -fr $midx-$(midx_checksum $objdir).bitmap && > @@ t/t5333-pseudo-merge-bitmaps.sh: test_pseudo_merges_reused () { > - perl -lne ' > - print "create refs/tags/" . $. . " " . $1 if /([0-9a-f]+)/ > - ' <in | git update-ref --stdin > -+ sed 's|\(.*\)|create refs/tags/\1 \1|' <in | > ++ sed 's|\(.*\)|create refs/tags/\1 \1|' in | > + git update-ref --stdin > } > > @@ t/t5333-pseudo-merge-bitmaps.sh: test_expect_success 'pseudo-merge pattern with > git rev-list HEAD~16.. >in && > - > - perl -lne "print \"create refs/remotes/$r/tags/\$. \$_\"" <in | > -+ sed "s|\(.*\)|create refs/remotes/$r/tags/\1 \1" <in | > ++ sed "s|\(.*\)|create refs/remotes/$r/tags/\1 \1" in | > git update-ref --stdin || return 1 > done && > > @@ t/t8002-blame.sh: test_expect_success 'set up abbrev tests' ' > echo $sha1 | cut -c 1-$expect >expect && > git blame "$@" abbrev.t >actual && > - perl -lne "/[0-9a-f]+/ and print \$&" <actual >actual.sha && > -+ sed -n "s/^[\^]\{0,1\}\([0-9a-f][0-9a-f]*\).*/\1/p" <actual >actual.sha && > ++ sed -n "s/^[\^]\{0,1\}\([0-9a-f][0-9a-f]*\).*/\1/p" actual >actual.sha && > test_cmp expect actual.sha > } > ' > 13: 905c25c9fb2 = 13: 7b03d096ccd t: refactor tests depending on Perl for textconv scripts > 14: 1fe67bba30f = 14: 195c0bf2445 t/lib-gpg: refactor `sanitize_pgp()` to not depend on Perl > 15: 9e572c3ba67 = 15: e92d178b96b t/lib-t6000: refactor `name_from_description()` to not depend on Perl > 16: 24abcffe96e ! 16: 0f2c9ad276b t/lib-httpd: refactor "one-time-perl" CGI script to not depend on Perl > @@ t/t5537-fetch-shallow.sh: test_expect_success PERL_TEST_HELPERS 'shallow fetches > - "$(git -C "$REPO" rev-parse HEAD^)" \ > - >"$HTTPD_ROOT_PATH/one-time-perl" && > + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-EOF && > -+ sed "$(printf "$(test_oid perl)" "$(git -C "$REPO" rev-parse HEAD)" "$(git -C "$REPO" rev-parse HEAD^)")" <"\$1" > ++ sed "$(printf "$(test_oid perl)" "$(git -C "$REPO" rev-parse HEAD)" "$(git -C "$REPO" rev-parse HEAD^)")" "\$1" > + EOF > test_must_fail env GIT_TEST_SIDEBAND_ALL=0 git -C client \ > - fetch --depth=1 "$HTTPD_URL/one_time_perl/repo" \ > @@ t/t5616-partial-clone.sh: intersperse () { > + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-EOF > + if grep packfile "\$1" >/dev/null > + then > -+ sed '/packfile/q' <"\$1" && > ++ sed '/packfile/q' "\$1" && > + # The protocol requires that the packfile be sent in sideband > + # 1, hence the extra \001 byte at the beginning. > + printf "%04x\001" \$((\$(wc -c <"$PWD/one-time-pack") + 5)) && > @@ t/t5702-protocol-v2.sh: test_expect_success PERL_TEST_HELPERS 'when server sends > - printf "\$ready = 1 if /ready/; \$ready && s/0001/0000/" \ > - >"$HTTPD_ROOT_PATH/one-time-perl" && > + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-\EOF && > -+ sed "/ready/{n;s/0001/0000/;}" <"$1" > ++ sed "/ready/{n;s/0001/0000/;}" "$1" > + EOF > > test_must_fail git -C http_child -c protocol.version=2 \ > @@ t/t5702-protocol-v2.sh: test_expect_success PERL_TEST_HELPERS 'when server does > - printf "\$ack = 1 if /acknowledgments/; \$ack && s/0000/0001/" \ > - >"$HTTPD_ROOT_PATH/one-time-perl" && > + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-\EOF && > -+ sed "/acknowledgments/,//{s/0000/0001/;}" <"$1" > ++ sed "/acknowledgments/,//{s/0000/0001/;}" "$1" > + EOF > > test_must_fail env GIT_TRACE_PACKET="$(pwd)/log" git -C http_child \ > @@ t/t5702-protocol-v2.sh: test_expect_success 'http:// --negotiate-only' ' > - echo "s/ wait-for-done/ xxxx-xxx-xxxx/" \ > - >"$HTTPD_ROOT_PATH/one-time-perl" && > + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-\EOF && > -+ sed "s/ wait-for-done/ xxxx-xxx-xxxx/" <"$1" > ++ sed "s/ wait-for-done/ xxxx-xxx-xxxx/" "$1" > + EOF > > test_must_fail git -c protocol.version=2 -C client fetch \ > @@ t/t5703-upload-pack-ref-in-want.sh: inconsistency () { > oid2=$(git -C "$REPO" rev-parse $2) && > - echo "s/$oid1/$oid2/" >"$HTTPD_ROOT_PATH/one-time-perl" > + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-EOF > -+ sed "s/$oid1/$oid2/" <"\$1" > ++ sed "s/$oid1/$oid2/" "\$1" > + EOF > } > > @@ t/t5703-upload-pack-ref-in-want.sh: test_expect_success 'server loses a ref - re > cp -r "$LOCAL_PRISTINE" local && > - echo "s/main/rain/" >"$HTTPD_ROOT_PATH/one-time-perl" && > + write_script "$HTTPD_ROOT_PATH/one-time-script" <<-\EOF && > -+ sed "s/main/rain/" <"$1" > ++ sed "s/main/rain/" "$1" > + EOF > test_must_fail git -C local fetch 2>err && > > 17: ce5adbd4818 = 17: 9857b461ed6 t0021: refactor `generate_random_characters()` to not depend on Perl > 18: e183c397da9 = 18: 7924b5bd9bf t0210: refactor trace2 scrubbing to not use Perl > 19: 156bdc4d62d = 19: 5d6996a1412 t5316: refactor `max_chain()` to not depend on Perl > 20: 3b181d0a203 = 20: 0c3afb70128 t5703: refactor test to not depend on Perl > > --- > base-commit: 683c54c999c301c2cd6f715c411407c413b1d84e > change-id: 20250317-b4-pks-t-perlless-138cf94696b8 > >