diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-12-07 14:10:17 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-12-07 14:10:17 -0800 |
commit | 6a402843c2bc0a72fb70c8795aee523d7f1582d3 (patch) | |
tree | 4ba680313d66959760850755c558823b5afd0f1f /t | |
parent | 7c65b2ebb72fcf9b563be3367a088256757343a6 (diff) | |
parent | de9095955c581a664d9ce568a1ae58a98484090e (diff) | |
download | git-6a402843c2bc0a72fb70c8795aee523d7f1582d3.tar.gz |
Merge branch 'lt/diff-stat-show-0-lines' into maint
"git diff --stat" miscounted the total number of changed lines when
binary files were involved and hidden beyond --stat-count. It also
miscounted the total number of changed files when there were
unmerged paths.
* lt/diff-stat-show-0-lines:
t4049: refocus tests
diff --shortstat: do not count "unmerged" entries
diff --stat: do not count "unmerged" entries
diff --stat: move the "total count" logic to the last loop
diff --stat: use "file" temporary variable to refer to data->files[i]
diff --stat: status of unmodified pair in diff-q is not zero
test: add failing tests for "diff --stat" to t4049
Fix "git diff --stat" for interesting - but empty - file changes
Diffstat (limited to 't')
-rwxr-xr-x | t/t4006-diff-mode.sh | 46 | ||||
-rwxr-xr-x | t/t4049-diff-stat-count.sh | 49 | ||||
-rwxr-xr-x | t/t4205-log-pretty-formats.sh | 4 |
3 files changed, 71 insertions, 28 deletions
diff --git a/t/t4006-diff-mode.sh b/t/t4006-diff-mode.sh index 3d4b1ba23f..05911492ca 100755 --- a/t/t4006-diff-mode.sh +++ b/t/t4006-diff-mode.sh @@ -32,28 +32,28 @@ test_expect_success 'prepare binary file' ' git commit -m binbin ' -test_expect_success '--stat output after text chmod' ' - test_chmod -x rezrov && - echo " 0 files changed" >expect && - git diff HEAD --stat >actual && - test_i18ncmp expect actual -' - -test_expect_success '--shortstat output after text chmod' ' - git diff HEAD --shortstat >actual && - test_i18ncmp expect actual -' - -test_expect_success '--stat output after binary chmod' ' - test_chmod +x binbin && - echo " 0 files changed" >expect && - git diff HEAD --stat >actual && - test_i18ncmp expect actual -' - -test_expect_success '--shortstat output after binary chmod' ' - git diff HEAD --shortstat >actual && - test_i18ncmp expect actual -' +# test_expect_success '--stat output after text chmod' ' +# test_chmod -x rezrov && +# echo " 0 files changed" >expect && +# git diff HEAD --stat >actual && +# test_i18ncmp expect actual +# ' +# +# test_expect_success '--shortstat output after text chmod' ' +# git diff HEAD --shortstat >actual && +# test_i18ncmp expect actual +# ' +# +# test_expect_success '--stat output after binary chmod' ' +# test_chmod +x binbin && +# echo " 0 files changed" >expect && +# git diff HEAD --stat >actual && +# test_i18ncmp expect actual +# ' +# +# test_expect_success '--shortstat output after binary chmod' ' +# git diff HEAD --shortstat >actual && +# test_i18ncmp expect actual +# ' test_done diff --git a/t/t4049-diff-stat-count.sh b/t/t4049-diff-stat-count.sh index b41eb61ca8..5b594e878f 100755 --- a/t/t4049-diff-stat-count.sh +++ b/t/t4049-diff-stat-count.sh @@ -4,19 +4,62 @@ 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 && - chmod +x 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_i18ncmp 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_i18ncmp 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 + done | + git update-index --index-info && + echo d >d && cat >expect <<-\EOF a | 1 + b | 1 + - 2 files changed, 2 insertions(+) + ... + 3 files changed, 3 insertions(+) EOF git diff --stat --stat-count=2 >actual && test_i18ncmp expect actual diff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh index 2c45de7aea..98a43d457a 100755 --- a/t/t4205-log-pretty-formats.sh +++ b/t/t4205-log-pretty-formats.sh @@ -85,7 +85,7 @@ test_expect_success 'NUL termination' ' test_expect_success 'NUL separation with --stat' ' stat0_part=$(git diff --stat HEAD^ HEAD) && - stat1_part=$(git diff --stat --root HEAD^) && + stat1_part=$(git diff-tree --no-commit-id --stat --root HEAD^) && printf "add bar\n$stat0_part\n\0initial\n$stat1_part\n" >expected && git log -z --stat --pretty="format:%s" >actual && test_i18ncmp expected actual @@ -93,7 +93,7 @@ test_expect_success 'NUL separation with --stat' ' test_expect_failure 'NUL termination with --stat' ' stat0_part=$(git diff --stat HEAD^ HEAD) && - stat1_part=$(git diff --stat --root HEAD^) && + stat1_part=$(git diff-tree --no-commit-id --stat --root HEAD^) && printf "add bar\n$stat0_part\n\0initial\n$stat1_part\n\0" >expected && git log -z --stat --pretty="tformat:%s" >actual && test_i18ncmp expected actual |