Re: [PATCH 3/6] t6423: document two bugs with rename-to-self testcases

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Aug 1, 2025 at 1:31 AM Patrick Steinhardt <ps@xxxxxx> wrote:
>
> On Tue, Jul 22, 2025 at 03:23:08PM +0000, Elijah Newren via GitGitGadget wrote:
> > diff --git a/t/t6423-merge-rename-directories.sh b/t/t6423-merge-rename-directories.sh
> > index f48ed6d03534..69de7a3b84af 100755
> > --- a/t/t6423-merge-rename-directories.sh
> > +++ b/t/t6423-merge-rename-directories.sh
> > @@ -5092,7 +5111,85 @@ test_expect_success '12n: Directory rename transitively makes rename back to sel
> >               git checkout -q B^0 &&
> >
> >               test_must_fail git cherry-pick A^0 >out &&
> > -             grep "CONFLICT (file location).*should perhaps be moved" out
> > +             grep "CONFLICT (file location).*should perhaps be moved" out &&
>
> Let's use `test_grep` while at it.

Oh, right, it was test_i18ngrep that we weren't supposed to use.
Yeah, I can switch over to test_grep.

> [snip]
> > +test_expect_failure '12n2: Directory rename transitively makes rename back to self' '
> > +     test_setup_12n2 &&
> > +     (
> > +             cd 12n2 &&
> > +
> > +             git checkout -q B^0 &&
> > +
> > +             # NOTE: Since merge.directoryRenames=true, there is no path
> > +             # conflict for world vs. tools/world; it should end up at
> > +             # world.  The fact that world was unmodified on side A, means
> > +             # there was no content conflict; we should just take the
> > +             # content from side B -- i.e. delete the file.  So merging
> > +             # could just delete world.
> > +             #
> > +             # However, rename-to-self-via-directory-rename is a bit more
> > +             # challenging.  Relax this test to allow world to be treated
> > +             # as a modify/delete conflict as well.
> > +
> > +             test_might_fail git -c merge.directoryRenames=true merge A^0 >out &&
> > +
> > +             # Should have 1 entry for hello, and either 0 or 2 for world
> > +             test_stdout_line_count = 1 git ls-files -s hello &&
> > +             test_stdout_line_count != 1 git ls-files -s world &&
> > +             if test_stdout_line_count != 0 git ls-files -s world
> > +             then
> > +                     grep "CONFLICT (modify/delete).*world deleted in HEAD" out
>
> Here, as well.

Will do.

> > +             fi
> >       )
> >  '
>
> I found it to be a bit weird that we have this conditional here.
> Shouldn't we expect one particular outcome? Even if multiple outcomes
> would be techincally correct I think we should expect one particular
> result, but we may add a comment to explain that different output would
> be fine, too.

Isn't that exactly what I did, with the note I'll copy below?

> > +             # NOTE: Since merge.directoryRenames=true, there is no path
> > +             # conflict for world vs. tools/world; it should end up at
> > +             # world.  The fact that world was unmodified on side A, means
> > +             # there was no content conflict; we should just take the
> > +             # content from side B -- i.e. delete the file.  So merging
> > +             # could just delete world.
> > +             #
> > +             # However, rename-to-self-via-directory-rename is a bit more
> > +             # challenging.  Relax this test to allow world to be treated
> > +             # as a modify/delete conflict as well.





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux