From 21798708031ed808cb77232e771e20d3146cf9c8 Mon Sep 17 00:00:00 2001 From: Thomas Rast Date: Thu, 15 Apr 2010 14:59:37 +0200 Subject: combined diff: correctly handle truncated file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Consider an evil merge of two commits A and B, both of which have a file 'foo', but the merge result does not have that file. The combined-diff code learned in 4462731 (combine-diff: do not punt on removed or added files., 2006-02-06) to concisely show only the removal, since that is the evil part and the previous contents are presumably uninteresting. However, to diagnose an empty merge result, it overloaded the variable that holds the file's length. This means that the check also triggers for truncated files. Consequently, such files were not shown in the diff at all despite the merge being clearly evil. Fix this by adding a new variable that distinguishes whether the file was deleted (which is the case 4462731 handled) or truncated. In the truncated case, we show the full combined diff again, which is rather spammy but at least does not hide the evilness. Reported-by: David Martínez Martí Signed-off-by: Thomas Rast Signed-off-by: Junio C Hamano --- t/t4038-diff-combined.sh | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 't') diff --git a/t/t4038-diff-combined.sh b/t/t4038-diff-combined.sh index 7584efa36b..40277c77aa 100755 --- a/t/t4038-diff-combined.sh +++ b/t/t4038-diff-combined.sh @@ -81,4 +81,12 @@ test_expect_success 'check combined output (2)' ' verify_helper sidesansone ' +test_expect_success 'diagnose truncated file' ' + >file && + git add file && + git commit --amend -C HEAD && + git show >out && + grep "diff --cc file" out +' + test_done -- cgit v1.2.3 From 53b3c47d64b4294ae586d1daa04f9140dadd9ae6 Mon Sep 17 00:00:00 2001 From: Michael J Gruber Date: Thu, 15 Apr 2010 11:34:07 +0200 Subject: t1010-mktree: Adjust expected result to code and documentation The last two tests here were always supposed to fail in the sense that, according to code and documentation, mktree should read non-recursive ls-tree output, but not recursive one, and therefore explicitely refuses to deal with slashes. Adjust the test (must_fail) so that it succeeds when mktree dies on slashes. Signed-off-by: Michael J Gruber Signed-off-by: Junio C Hamano --- t/t1010-mktree.sh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 't') diff --git a/t/t1010-mktree.sh b/t/t1010-mktree.sh index 9956e3ad62..b946f87686 100755 --- a/t/t1010-mktree.sh +++ b/t/t1010-mktree.sh @@ -58,14 +58,12 @@ test_expect_success 'allow missing object with --missing' ' test_cmp tree.missing actual ' -test_expect_failure 'mktree reads ls-tree -r output (1)' ' - git mktree actual && - test_cmp tree actual +test_expect_success 'mktree refuses to read ls-tree -r output (1)' ' + test_must_fail git mktree actual ' -test_expect_failure 'mktree reads ls-tree -r output (2)' ' - git mktree actual && - test_cmp tree.withsub actual +test_expect_success 'mktree refuses to read ls-tree -r output (2)' ' + test_must_fail git mktree actual ' test_done -- cgit v1.2.3