On Fri, Nov 10, 2017 at 11:05 AM, Elijah Newren <newren@xxxxxxxxx> wrote: > t3501 had a testcase originally added ... goes and looks ... "in 05f2dfb965 (cherry-pick: demonstrate a segmentation fault, 2016-11-26)" would have helped me here in the commit message. > to ensure cherry-pick wouldn't > segfault when working with a dirty file involved in a rename. While > the segfault was fixed, there was another problem this test demonstrated: > namely, that git would overwrite a dirty file involved in a rename. > Further, the test encoded a "successful merge" and overwriting of this > file as correct behavior. Modify the test so that it would still catch > the segfault, but to require the correct behavior. As the correct behavior is not yet implemented, mark it as test_expect_failure, too. (probably this reads implicit) > > t7607 had a test ... added in 30fd3a5425 (merge overwrites unstaged changes in renamed file, 2012-04-15) ... > specific to looking for a merge overwriting a dirty file > involved in a rename, but it too actually encoded what I would term > incorrect behavior: it expected the merge to succeed. Fix that, and add > a few more checks to make sure that the merge really does produce the > expected results. > > Signed-off-by: Elijah Newren <newren@xxxxxxxxx> > --- > t/t3501-revert-cherry-pick.sh | 7 +++++-- > t/t7607-merge-overwrite.sh | 5 ++++- > 2 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/t/t3501-revert-cherry-pick.sh b/t/t3501-revert-cherry-pick.sh > index 4f2a263b63..783bdbf59d 100755 > --- a/t/t3501-revert-cherry-pick.sh > +++ b/t/t3501-revert-cherry-pick.sh > @@ -141,7 +141,7 @@ test_expect_success 'cherry-pick "-" works with arguments' ' > test_cmp expect actual > ' > > -test_expect_success 'cherry-pick works with dirty renamed file' ' > +test_expect_failure 'cherry-pick works with dirty renamed file' ' > test_commit to-rename && > git checkout -b unrelated && > test_commit unrelated && > @@ -150,7 +150,10 @@ test_expect_success 'cherry-pick works with dirty renamed file' ' > test_tick && > git commit -m renamed && > echo modified >renamed && > - git cherry-pick refs/heads/unrelated > + test_must_fail git cherry-pick refs/heads/unrelated >out && > + test_i18ngrep "Refusing to lose dirty file at renamed" out && > + test $(git rev-parse :0:renamed) = $(git rev-parse HEAD^:to-rename.t) && > + grep -q "^modified$" renamed > ' > > test_done > diff --git a/t/t7607-merge-overwrite.sh b/t/t7607-merge-overwrite.sh > index 9444d6a9b9..00617dadf8 100755 > --- a/t/t7607-merge-overwrite.sh > +++ b/t/t7607-merge-overwrite.sh > @@ -97,7 +97,10 @@ test_expect_failure 'will not overwrite unstaged changes in renamed file' ' > git mv c1.c other.c && > git commit -m rename && > cp important other.c && > - git merge c1a && > + test_must_fail git merge c1a >out && > + test_i18ngrep "Refusing to lose dirty file at other.c" out && > + test -f other.c~HEAD && > + test $(git hash-object other.c~HEAD) = $(git rev-parse c1a:c1.c) && > test_cmp important other.c Code looks good, Thanks, Stefan