[PATCH v4 1/2] t6400: preserve git ls-files exit status code
From: Đoàn Trần Công Danh <hidden>
Date: 2021-06-29 13:58:00
Subsystem:
the rest · Maintainer:
Linus Torvalds
In t6400, we're checking number of files in the index and the working tree by piping the output of "git ls-files" to "wc -l", thus losing the exit status code of git. Let's write the output of "git ls-files" to a temporary file, in order to check exit status code of "git ls-files" properly. Signed-off-by: Đoàn Trần Công Danh <redacted> --- t/t6400-merge-df.sh | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-)
diff --git a/t/t6400-merge-df.sh b/t/t6400-merge-df.sh
index 38700d29b5..c2888323c1 100755
--- a/t/t6400-merge-df.sh
+++ b/t/t6400-merge-df.sh@@ -9,6 +9,20 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./test-lib.sh +check_ls_files_count() { + local ops val + if test "$#" -le 2 + then + BUG "Expect 2 or more arguments" + fi && + ops="$1" && + val="$2" && + shift 2 && + mkdir -p .git/trash && + git ls-files "$@" >.git/trash/output && + test_line_count "$ops" "$val" .git/trash/output +} + test_expect_success 'prepare repository' ' echo Hello >init && git add init &&
@@ -82,13 +96,13 @@ test_expect_success 'modify/delete + directory/file conflict' ' git checkout delete^0 && test_must_fail git merge modify && - test 5 -eq $(git ls-files -s | wc -l) && - test 4 -eq $(git ls-files -u | wc -l) && + check_ls_files_count = 5 -s && + check_ls_files_count = 4 -u && if test "$GIT_TEST_MERGE_ALGORITHM" = ort then - test 0 -eq $(git ls-files -o | wc -l) + check_ls_files_count = 0 -o else - test 1 -eq $(git ls-files -o | wc -l) + check_ls_files_count = 1 -o fi && test_path_is_file letters/file &&
@@ -103,13 +117,13 @@ test_expect_success 'modify/delete + directory/file conflict; other way' ' test_must_fail git merge delete && - test 5 -eq $(git ls-files -s | wc -l) && - test 4 -eq $(git ls-files -u | wc -l) && + check_ls_files_count = 5 -s && + check_ls_files_count = 4 -u && if test "$GIT_TEST_MERGE_ALGORITHM" = ort then - test 0 -eq $(git ls-files -o | wc -l) + check_ls_files_count = 0 -o else - test 1 -eq $(git ls-files -o | wc -l) + check_ls_files_count = 1 -o fi && test_path_is_file letters/file &&
--
2.32.0.278.gd42b80f139