test: add failing tests for "diff --stat" to t4049
authorJunio C Hamano <gitster@pobox.com>
Tue, 27 Nov 2012 20:55:00 +0000 (12:55 -0800)
committerJunio C Hamano <gitster@pobox.com>
Tue, 27 Nov 2012 21:21:15 +0000 (13:21 -0800)
There are a few problems in diff.c around --stat area, partially
caused by the recent 74faaa1 (Fix "git diff --stat" for interesting
- but empty - file changes, 2012-10-17), and largely caused by the
earlier change that introduced when --stat-count was added.

Add a few test pieces to t4049 to expose the issues.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t4049-diff-stat-count.sh

index 7b3ef00533f7b2fc5f8cea7b9d3553365ac69d0c..e212b11867c87661afb3a3ac85a6fdaf7a834225 100755 (executable)
@@ -4,12 +4,17 @@
 test_description='diff --stat-count'
 . ./test-lib.sh
 
-test_expect_success setup '
+test_expect_success 'setup' '
        >a &&
        >b &&
        >c &&
        >d &&
        git add a b c d &&
+       git commit -m initial
+'
+
+test_expect_success 'limit output to 2 (simple)' '
+       git reset --hard &&
        chmod +x c d &&
        echo a >a &&
        echo b >b &&
@@ -23,4 +28,43 @@ test_expect_success setup '
        test_i18ncmp expect actual
 '
 
+test_expect_failure 'binary changes do not count in lines' '
+       git reset --hard &&
+       chmod +x c d &&
+       echo a >a &&
+       echo b >b &&
+       cat "$TEST_DIRECTORY"/test-binary-1.png >d &&
+       cat >expect <<-\EOF
+        a | 1 +
+        b | 1 +
+        ...
+        4 files changed, 2 insertions(+)
+       EOF
+       git diff --stat --stat-count=2 >actual &&
+       test_i18ncmp expect actual
+'
+
+test_expect_failure '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
+       done |
+       git update-index --index-info &&
+       echo d >d &&
+       chmod +x c d &&
+       cat >expect <<-\EOF
+        a | 1 +
+        b | 1 +
+        ...
+        4 files changed, 3 insertions(+)
+       EOF
+       git diff --stat --stat-count=2 >actual &&
+       test_i18ncmp expect actual
+'
+
 test_done