On 09.12.2021 00:11, Eric Sunshine wrote:
Failures within `for` and `while` loops can go unnoticed if not detected and signaled manually since the loop itself does not abort when a contained command fails, nor will a failure necessarily be detected when the loop finishes since the loop returns the exit code of the last command it ran on the final iteration, which may not be the command which failed. Therefore, detect and signal failures manually within loops using the idiom `|| return 1` (or `|| exit 1` within subshells). Signed-off-by: Eric Sunshine <sunshine@xxxxxxxxxxxxxx> --- diff --git a/t/t4015-diff-whitespace.sh b/t/t4015-diff-whitespace.sh index 2c13b62d3c..ca5adabe14 100755 --- a/t/t4015-diff-whitespace.sh +++ b/t/t4015-diff-whitespace.sh @@ -843,7 +843,7 @@ test_expect_success 'whitespace changes with modification reported (diffstat)' ' test_expect_success 'whitespace-only changes reported across renames (diffstat)' ' git reset --hard && - for i in 1 2 3 4 5 6 7 8 9; do echo "$i$i$i$i$i$i"; done >x && + for i in 1 2 3 4 5 6 7 8 9; do echo "$i$i$i$i$i$i" || return 1; done >x && git add x && git commit -m "base" && sed -e "5s/^/ /" x >z && @@ -859,7 +859,7 @@ test_expect_success 'whitespace-only changes reported across renames (diffstat)' test_expect_success 'whitespace-only changes reported across renames' ' git reset --hard HEAD~1 && - for i in 1 2 3 4 5 6 7 8 9; do echo "$i$i$i$i$i$i"; done >x && + for i in 1 2 3 4 5 6 7 8 9; do echo "$i$i$i$i$i$i" || return 1; done >x && git add x && hash_x=$(git hash-object x) && before=$(git rev-parse --short "$hash_x") &&
I understand why the `|| return` in loops makes sense. But for these very simple ones just using `echo` I'll probably be confused if a linter starts to complain about them (probably depending on how specific the lint error will be).