Re: [PATCH v3 00/20] t: drop Perl as a mandatory prerequisite

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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






[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux