mirror of
https://github.com/git/git
synced 2024-09-12 21:04:12 +00:00
cbe1d9d630
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@sunshineco.com> Reviewed-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
69 lines
1.2 KiB
Bash
Executable file
69 lines
1.2 KiB
Bash
Executable file
#!/bin/sh
|
|
# Copyright (c) 2011, Google Inc.
|
|
|
|
test_description='diff --stat-count'
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'setup' '
|
|
>a &&
|
|
>b &&
|
|
>c &&
|
|
>d &&
|
|
git add a b c d &&
|
|
git commit -m initial
|
|
'
|
|
|
|
test_expect_success 'mode-only change show as a 0-line change' '
|
|
git reset --hard &&
|
|
test_chmod +x b d &&
|
|
echo a >a &&
|
|
echo c >c &&
|
|
cat >expect <<-\EOF &&
|
|
a | 1 +
|
|
b | 0
|
|
...
|
|
4 files changed, 2 insertions(+)
|
|
EOF
|
|
git diff --stat --stat-count=2 HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'binary changes do not count in lines' '
|
|
git reset --hard &&
|
|
echo a >a &&
|
|
echo c >c &&
|
|
cat "$TEST_DIRECTORY"/test-binary-1.png >d &&
|
|
cat >expect <<-\EOF &&
|
|
a | 1 +
|
|
c | 1 +
|
|
...
|
|
3 files changed, 2 insertions(+)
|
|
EOF
|
|
git diff --stat --stat-count=2 >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'exclude unmerged entries from total file count' '
|
|
git reset --hard &&
|
|
echo a >a &&
|
|
echo b >b &&
|
|
git ls-files -s a >x &&
|
|
git rm -f d &&
|
|
for stage in 1 2 3
|
|
do
|
|
sed -e "s/ 0 a/ $stage d/" x || return 1
|
|
done |
|
|
git update-index --index-info &&
|
|
echo d >d &&
|
|
cat >expect <<-\EOF &&
|
|
a | 1 +
|
|
b | 1 +
|
|
...
|
|
3 files changed, 3 insertions(+)
|
|
EOF
|
|
git diff --stat --stat-count=2 >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_done
|