[GSOC][PATCH v2] t3701: don't lose "git" exit codes in test scripts
Exit codes were lost due to piping and command substitution:
- "git ... | <command>"
- "<command> $(git ... )"
Fix these issues using the intermediate step of writing output to file.
---
Changes in response to review:
- addressed code style issues: ">diff" not "> diff_file"
- a more direct alternative to "test -z $(cat ...)"
- commit message similar to previous commits accomplishing same goals
- revert unnecessary change. keep "<var> = $(git ...)"
t/t3701-add-interactive.sh | 31 +++++++++++++++----------------
1 file changed, 15 insertions(+), 16 deletions(-)
diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index 80446b311d..77aad9032a 100755
--- a/t/t3701-add-interactive.sh
+++ b/t/t3701-add-interactive.sh
@@ -292,10 +292,10 @@ test_expect_success FILEMODE 'patch does not affect mode' '
echo content >>file &&
chmod +x file &&
printf "n\\ny\\n" | git add -p &&
- git show :file > show_file &&
- grep content show_file &&
- git diff file > diff_file &&
- grep "new mode" diff_file
+ git show :file >show &&
+ grep content show &&
+ git diff file >diff &&
+ grep "new mode" diff
'
test_expect_success FILEMODE 'stage mode but not hunk' '
@@ -303,10 +303,10 @@ test_expect_success FILEMODE 'stage mode but not hunk' '
echo content >>file &&
chmod +x file &&
printf "y\\nn\\n" | git add -p &&
- git diff --cached file > diff_file &&
- grep "new mode" diff_file &&
- git diff file > diff_file &&
- grep "+content" diff_file
+ git diff --cached file >diff &&
+ grep "new mode" diff &&
+ git diff file >diff &&
+ grep "+content" diff
'
@@ -315,12 +315,11 @@ test_expect_success FILEMODE 'stage mode and hunk' '
echo content >>file &&
chmod +x file &&
printf "y\\ny\\n" | git add -p &&
- git diff --cached file > diff_file &&
- grep "new mode" diff_file &&
- git diff --cached file diff_file &&
- grep "+content" diff_file &&
- git diff file > diff_file &&
- test -z $(cat diff_file)
+ git diff --cached file >diff &&
+ grep "new mode" diff &&
+ grep "+content" diff &&
+ git diff file >diff &&
+ test_must_be_empty diff
'
# end of tests disabled when filemode is not usable
@@ -977,8 +976,8 @@ test_expect_success 'handle submodules' '
force_color git -C for-submodules add -p dirty-head >output 2>&1 <y &&
git -C for-submodules ls-files --stage dirty-head >actual &&
- git -C for-submodules/dirty-head rev-parse HEAD > rev &&
- grep -f rev actual
+ rev="$(git -C for-submodules/dirty-head rev-parse HEAD)" &&
+ grep "$rev" actual
'
test_expect_success 'set up pathological context' '
--
2.40.0