From: Trieu Huynh Date: Sat, 28 Mar 2026 20:02:55 GMT Subject: [GSoC PATCH 16/16] t2206: avoid suppressing git's exit code Message-ID: <20260328200255.247759-17-vikingtc4@gmail.com> In-Reply-To: <20260328200255.247759-1-vikingtc4@gmail.com> Update t2206-add-submodule-ignored.sh to redirect git-cmds output to a temporary file instead of piping it directly to not hide the exit code of git commands behind pipes, as a crash in git might go unnoticed. Some tests run inside a subdirectory that is itself a git repo and use 'git add .' on the whole working tree, so the temporary file is written as '../actual' to keep it outside the inner repo and prevent it from being accidentally staged. Signed-off-by: Trieu Huynh --- t/t2206-add-submodule-ignored.sh | 45 +++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/t/t2206-add-submodule-ignored.sh b/t/t2206-add-submodule-ignored.sh index e581e87ab2..7141012e50 100755 --- a/t/t2206-add-submodule-ignored.sh +++ b/t/t2206-add-submodule-ignored.sh @@ -45,9 +45,11 @@ test_expect_success 'main: add submodule with default config' ' cd main && git submodule add ../sub && git commit -m "add submodule" && - git log --oneline --name-only | grep "^sub$" && + git log --oneline --name-only >actual && + test_grep "^sub$" actual && git -C sub reset --hard v2.0 && - git status --porcelain | grep "^ M sub$" && + git status --porcelain >actual && + test_grep "^ M sub$" actual && echo ' #3 @@ -58,8 +60,10 @@ test_expect_success 'main: submodule config ignore=all' ' git config -f .gitmodules submodule.sub.ignore all && GIT_TRACE=1 git add . && git commit -m "update submodule config sub.ignore all" && - ! git status --porcelain | grep "^.*$" && - ! git log --oneline --name-only | grep "^sub$" && + git status --porcelain >../actual && + test_must_be_empty ../actual && + git log --oneline --name-only >../actual && + test_grep ! "^sub$" ../actual && echo ' #4 @@ -69,8 +73,10 @@ test_expect_success 'sub: change to different sha1 and check status in main' ' cd "${base_path}" && cd main && git -C sub reset --hard v1.0 && - ! git status --porcelain | grep "^ M sub$" && - git status --ignore-submodules=none --porcelain | grep "^ M sub$" && + git status --porcelain >../actual && + test_grep ! "^ M sub$" ../actual && + git status --ignore-submodules=none --porcelain >../actual && + test_grep "^ M sub$" ../actual && echo ' @@ -80,7 +86,8 @@ test_expect_success 'main: check normal add and status' ' cd "${base_path}" && cd main && GIT_TRACE=1 git add . && - ! git status --porcelain | grep "^ M sub$" && + git status --porcelain >../actual && + test_grep ! "^ M sub$" ../actual && echo ' @@ -91,7 +98,8 @@ test_expect_success 'main: check --force add . and status' ' cd "${base_path}" && cd main && GIT_TRACE=1 git add --force . && - ! git status --porcelain | grep "^M sub$" && + git status --porcelain >../actual && + test_grep ! "^M sub$" ../actual && echo ' @@ -101,8 +109,10 @@ test_expect_success 'main: check --force add . and status' ' test_expect_success 'main: check _add sub_ and status' ' cd "${base_path}" && cd main && - GIT_TRACE=1 git add sub 2>&1 | grep "Skipping submodule due to ignore=all: sub" && - ! git status --porcelain | grep "^M sub$" && + GIT_TRACE=1 git add sub >../actual 2>&1 && + test_grep "Skipping submodule due to ignore=all: sub" ../actual && + git status --porcelain >../actual && + test_grep ! "^M sub$" ../actual && echo ' @@ -118,15 +128,20 @@ test_expect_success 'main: check force add sub and ./sub/ and status' ' cd main && echo "Adding with --force should work: git add --force sub" && GIT_TRACE=1 git add --force sub && - git status --porcelain | grep "^M sub$" && + git status --porcelain >../actual && + test_grep "^M sub$" ../actual && git restore --staged sub && - ! git status --porcelain | grep "^M sub$" && + git status --porcelain >../actual && + test_grep ! "^M sub$" ../actual && echo "Adding with --force should work: git add --force ./sub/" && GIT_TRACE=1 git add --force ./sub/ && - git status --porcelain | grep "^M sub$" && + git status --porcelain >../actual && + test_grep "^M sub$" ../actual && git commit -m "update submodule pointer" && - ! git status --porcelain | grep "^ M sub$" && - git log --ignore-submodules=none --name-only --oneline | grep "^sub$" && + git status --porcelain >../actual && + test_grep ! "^ M sub$" ../actual && + git log --ignore-submodules=none --name-only --oneline >../actual && + test_grep "^sub$" ../actual && echo ' -- 2.43.0