From: Junio C Hamano <hidden> Date: 2021-06-14 04:11:34
Jiang Xin [off-list ref] writes:
From: Jiang Xin <redacted>
In addition to fix the bash incompatible issue of t6020, find another
issue when try to rewrite t5411 to compare raw command output.
Do the three later patches depend on the t6020 fix, or is this made
a 4-patch series only for the convenience of sending them out?
It's not like get_abbrev_oid() used in t6020 is defined in a common
part of the test library and later used by other tests (instead, the
patches duplicate this helper function into yet two more files).
Junio C Hamano [off-list ref] 于2021年6月14日周一 下午12:10写道:
Jiang Xin [off-list ref] writes:
quoted
From: Jiang Xin <redacted>
In addition to fix the bash incompatible issue of t6020, find another
issue when try to rewrite t5411 to compare raw command output.
Do the three later patches depend on the t6020 fix, or is this made
a 4-patch series only for the convenience of sending them out?
It's not like get_abbrev_oid() used in t6020 is defined in a common
part of the test library and later used by other tests (instead, the
patches duplicate this helper function into yet two more files).
Will split it into two patch series. One will fix bash incompatible
parameter expansion in t6020, another will fix clear-to-eol at packet
boundary issue of sideband and try to test raw output in t6020, t5548
and t5411.
I also queue another patch series, which add "--bare" support to
"test_create_repo", and replace "git init" command in test cases to
adapt to variable GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME.
--
Jiang Xin
Ævar reported that the function `make_user_friendly_and_stable_output()`
failed on a i386 box (gcc45) in the gcc farm boxes with error:
sed: couldn't re-allocate memory
It turns out that older versions of bash (4.3) or dash (0.5.7) cannot
evaluate expression like `${A%${A#???????}}` used to get the leading 7
characters of variable A.
Replace the incompatible parameter expansion so that t6020 works on
older version of bash or dash.
Reported-by: Ævar Arnfjörð Bjarmason <redacted>
Signed-off-by: Jiang Xin <redacted>
---
t/t6020-bundle-misc.sh | 50 ++++++++++++++++++++++++++----------------
1 file changed, 31 insertions(+), 19 deletions(-)
@@ -80,30 +80,42 @@ test_commit_setvar () {eval$var=$oid}+get_abbrev_oid(){+oid=$1&&+suffix=${oid#???????}&&+oid=${oid%$suffix}&&+iftest-n"$oid"+then+echo"$oid"+else+echo"undefined-oid"+fi+}+# Format the output of git commands to make a user-friendly and stable# text. We can easily prepare the expect text without having to worry# about future changes of the commit ID and spaces of the output. make_user_friendly_and_stable_output(){sed\--e"s/${A%${A#???????}}[0-9a-f]*/<COMMIT-A>/g"\--e"s/${B%${B#???????}}[0-9a-f]*/<COMMIT-B>/g"\--e"s/${C%${C#???????}}[0-9a-f]*/<COMMIT-C>/g"\--e"s/${D%${D#???????}}[0-9a-f]*/<COMMIT-D>/g"\--e"s/${E%${E#???????}}[0-9a-f]*/<COMMIT-E>/g"\--e"s/${F%${F#???????}}[0-9a-f]*/<COMMIT-F>/g"\--e"s/${G%${G#???????}}[0-9a-f]*/<COMMIT-G>/g"\--e"s/${H%${H#???????}}[0-9a-f]*/<COMMIT-H>/g"\--e"s/${I%${I#???????}}[0-9a-f]*/<COMMIT-I>/g"\--e"s/${J%${J#???????}}[0-9a-f]*/<COMMIT-J>/g"\--e"s/${K%${K#???????}}[0-9a-f]*/<COMMIT-K>/g"\--e"s/${L%${L#???????}}[0-9a-f]*/<COMMIT-L>/g"\--e"s/${M%${M#???????}}[0-9a-f]*/<COMMIT-M>/g"\--e"s/${N%${N#???????}}[0-9a-f]*/<COMMIT-N>/g"\--e"s/${O%${O#???????}}[0-9a-f]*/<COMMIT-O>/g"\--e"s/${P%${P#???????}}[0-9a-f]*/<COMMIT-P>/g"\--e"s/${TAG1%${TAG1#???????}}[0-9a-f]*/<TAG-1>/g"\--e"s/${TAG2%${TAG2#???????}}[0-9a-f]*/<TAG-2>/g"\--e"s/${TAG3%${TAG3#???????}}[0-9a-f]*/<TAG-3>/g"\+-e"s/$(get_abbrev_oid$A)[0-9a-f]*/<COMMIT-A>/g"\+-e"s/$(get_abbrev_oid$B)[0-9a-f]*/<COMMIT-B>/g"\+-e"s/$(get_abbrev_oid$C)[0-9a-f]*/<COMMIT-C>/g"\+-e"s/$(get_abbrev_oid$D)[0-9a-f]*/<COMMIT-D>/g"\+-e"s/$(get_abbrev_oid$E)[0-9a-f]*/<COMMIT-E>/g"\+-e"s/$(get_abbrev_oid$F)[0-9a-f]*/<COMMIT-F>/g"\+-e"s/$(get_abbrev_oid$G)[0-9a-f]*/<COMMIT-G>/g"\+-e"s/$(get_abbrev_oid$H)[0-9a-f]*/<COMMIT-H>/g"\+-e"s/$(get_abbrev_oid$I)[0-9a-f]*/<COMMIT-I>/g"\+-e"s/$(get_abbrev_oid$J)[0-9a-f]*/<COMMIT-J>/g"\+-e"s/$(get_abbrev_oid$K)[0-9a-f]*/<COMMIT-K>/g"\+-e"s/$(get_abbrev_oid$L)[0-9a-f]*/<COMMIT-L>/g"\+-e"s/$(get_abbrev_oid$M)[0-9a-f]*/<COMMIT-M>/g"\+-e"s/$(get_abbrev_oid$N)[0-9a-f]*/<COMMIT-N>/g"\+-e"s/$(get_abbrev_oid$O)[0-9a-f]*/<COMMIT-O>/g"\+-e"s/$(get_abbrev_oid$P)[0-9a-f]*/<COMMIT-P>/g"\+-e"s/$(get_abbrev_oid$TAG1)[0-9a-f]*/<TAG-1>/g"\+-e"s/$(get_abbrev_oid$TAG2)[0-9a-f]*/<TAG-2>/g"\+-e"s/$(get_abbrev_oid$TAG3)[0-9a-f]*/<TAG-3>/g"\-e"s/ *\$//"}
Ævar reported that the function `make_user_friendly_and_stable_output()`
failed on a i386 box (gcc45) in the gcc farm boxes with error:
sed: couldn't re-allocate memory
It turns out that older versions of bash (4.3) or dash (0.5.7) cannot
evaluate expression like `${A%${A#???????}}` used to get the leading 7
characters of variable A.
Replace the incompatible parameter expansion so that t6020 works on
older version of bash or dash.
Reported-by: Ævar Arnfjörð Bjarmason <redacted>
Signed-off-by: Jiang Xin <redacted>
---
For what it's worth I've also tested this v3 on gcc45, it works too.