Web lists-archives.com

Re: [PATCH 01/30] Tighten and correct a few testcases for merging and cherry-picking




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