Re: [GSoC][PATCH v3 2/3] t0000: avoid using pipes
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2019-03-17 16:47:13
On Sun, Mar 17 2019, Jonathan Chang wrote:
quoted hunk ↗ jump to hunk
The exit code of the upstream in a pipe is ignored thus we should avoid using it. By writing out the output of the git command to a file, we can test the exit codes of both the commands. Signed-off-by: Jonathan Chang <redacted> --- t/t0000-basic.sh | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-)diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh index 53821f5817..47666b013e 100755 --- a/t/t0000-basic.sh +++ b/t/t0000-basic.sh@@ -1118,27 +1118,25 @@ P=$(test_oid root) test_expect_success 'git commit-tree records the correct tree in a commit' ' commit0=$(echo NO | git commit-tree $P) && - tree=$(git show --pretty=raw $commit0 | - sed -n -e "s/^tree //p" -e "/^author /q") && + git show --pretty=raw $commit0 >actual && + tree=$(sed -n -e "s/^tree //p" -e "/^author /q" actual) && test "z$tree" = "z$P"
This change is an improvement just changing the "git" invocations. But I
wonder as we're reviewing this / churning this if we couldn't also
modernize this style to just:
git .. >tmp &&
sed -n -e <tmp >actual &&
test_must_be_empty actual
' test_expect_success 'git commit-tree records the correct parent in a commit' ' commit1=$(echo NO | git commit-tree $P -p $commit0) && - parent=$(git show --pretty=raw $commit1 | - sed -n -e "s/^parent //p" -e "/^author /q") && + git show --pretty=raw $commit1 >actual && + parent=$(sed -n -e "s/^parent //p" -e "/^author /q" actual) && test "z$commit0" = "z$parent"
ditto.
' test_expect_success 'git commit-tree omits duplicated parent in a commit' ' commit2=$(echo NO | git commit-tree $P -p $commit0 -p $commit0) && - parent=$(git show --pretty=raw $commit2 | - sed -n -e "s/^parent //p" -e "/^author /q" | - sort -u) && + git show --pretty=raw $commit2 >actual && + parent=$(sed -n -e "s/^parent //p" -e "/^author /q" actual | sort -u) && test "z$commit0" = "z$parent" && - numparent=$(git show --pretty=raw $commit2 | - sed -n -e "s/^parent //p" -e "/^author /q" | - wc -l) && + git show --pretty=raw $commit2 >actual && + numparent=$(sed -n -e "s/^parent //p" -e "/^author /q" actual | wc -l) && test $numparent = 1
And stuff like this to (skipping the wc -l):
sed -n -e <tmp >actual &&
test_line_count = 1 actual
quoted hunk ↗ jump to hunk
'@@ -1147,7 +1145,8 @@ test_expect_success 'update-index D/F conflict' ' mv path2 path0 && mv tmp path2 && git update-index --add --replace path2 path0/file2 && - numpath0=$(git ls-files path0 | wc -l) && + git ls-files path0 >actual && + numpath0=$(wc -l <actual) && test $numpath0 = 1
ditto.
quoted hunk ↗ jump to hunk
'@@ -1162,12 +1161,13 @@ test_expect_success 'very long name in the index handled sanely' ' >path4 && git update-index --add path4 && ( - git ls-files -s path4 | - sed -e "s/ .*/ /" | + git ls-files -s path4 >actual && + sed -e "s/ .*/ /" actual | tr -d "\012" && echo "$a" ) | git update-index --index-info && - len=$(git ls-files "a*" | wc -c) && + git ls-files "a*" >actual && + len=$(wc -c <actual) && test $len = 4098
Ditto. Maybe the initial author wanted to avoid writing out 4k lines, but now that we're doing so anyway...