git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCHv6 03/31] directory rename detection: testcases to avoid taking detection too far

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Jan 26, 2018, 11:37 UTC
Message-ID
<CAM0VKj=qhJQJ7uJWbBouSTYD0frA1zp1gwXzMVXuTiF+C6GH+g@mail.gmail.com>
In-Reply-To
<20180105202711.24311-4-newren@gmail.com>
On Fri, Jan 5, 2018 at 9:26 PM, Elijah Newren <newren@gmail.com> wrote:
Show 9 quoted lines
> Signed-off-by: Elijah Newren <newren@gmail.com>
> ---
>  t/t6043-merge-rename-directories.sh | 153 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 153 insertions(+)
>
> diff --git a/t/t6043-merge-rename-directories.sh b/t/t6043-merge-rename-directories.sh
> index f36493289..239819f2d 100755
> --- a/t/t6043-merge-rename-directories.sh
> +++ b/t/t6043-merge-rename-directories.sh
Show 9 quoted lines
> +test_expect_success '3b-check: Avoid implicit rename if involved as source on current side' '
> +       (
> +               cd 3b &&
> +
> +               git checkout A^0 &&
> +
> +               test_must_fail git merge -s recursive B^0 >out &&
> +               test_i18ngrep CONFLICT.*rename/rename.*z/d.*x/d.*w/d out &&
> +               test_i18ngrep ! CONFLICT.*rename/rename.*y/d &&
The filename argument is missing in the above line.

Why does the test still succeed, then? Because 'test_i18ngrep' is expected not to find the given pattern, and of course it won't find the pattern if its input is empty as it comes from /dev/null instead of the appropriate file.

Show 34 quoted lines
> +
> +               git ls-files -s >out &&
> +               test_line_count = 5 out &&
> +               git ls-files -u >out &&
> +               test_line_count = 3 out &&
> +               git ls-files -o >out &&
> +               test_line_count = 1 out &&
> +
> +               git rev-parse >actual \
> +                       :0:y/b :0:y/c :1:z/d :2:x/d :3:w/d &&
> +               git rev-parse >expect \
> +                       O:z/b O:z/c O:z/d O:z/d O:z/d &&
> +               test_cmp expect actual &&
> +
> +               test_path_is_missing z/d &&
> +               git hash-object >actual \
> +                       x/d w/d &&
> +               git rev-parse >expect \
> +                       O:z/d O:z/d &&
> +               test_cmp expect actual
> +       )
> +'
> +
> +###########################################################################
> +# Rules suggested by section 3:
> +#
> +#   Avoid directory-rename-detection for a path, if that path is the source
> +#   of a rename on either side of a merge.
> +###########################################################################
> +
>  test_done
> --
> 2.14.2
>
Previous: Elijah NewrenNext: Elijah Newren
Message 33 of 34 in “[PATCHv6 00/31] Add directory rename detection to git”
  1. Elijah NewrenJan 5, 2018
  2. 01/31 directory rename detection: basic testcasesElijah Newren, Jan 5, 2018
  3. 07/31 directory rename detection: more involved edge/corner testcasesElijah Newren, Jan 5, 2018
  4. 08/31 directory rename detection: testcases exploring possibly suboptimal mergesElijah Newren, Jan 5, 2018
  5. 05/31 directory rename detection: files/directories in the way of some renamesElijah Newren, Jan 5, 2018
  6. 15/31 merge-recursive: make !o->detect_rename codepath more obviousElijah Newren, Jan 5, 2018
  7. 17/31 merge-recursive: add a new hashmap for storing directory renamesElijah Newren, Jan 5, 2018
  8. 19/31 merge-recursive: add get_directory_renames()Elijah Newren, Jan 5, 2018
  9. 18/31 merge-recursive: make a helper function for cleanup for handle_renamesElijah Newren, Jan 5, 2018
  10. 23/31 merge-recursive: check for file level conflicts then get new nameElijah Newren, Jan 5, 2018
  11. 25/31 merge-recursive: apply necessary modifications for directory renamesElijah Newren, Jan 5, 2018
  12. 28/31 merge-recursive: fix remaining directory rename + dirty overwrite casesElijah Newren, Jan 5, 2018
  13. 30/31 merge-recursive: avoid spurious rename/rename conflict from dir renamesElijah Newren, Jan 5, 2018
  14. 29/31 directory rename detection: new testcases showcasing a pair of bugsElijah Newren, Jan 5, 2018
  15. 31/31 merge-recursive: ensure we write updates for directory-renamed fileElijah Newren, Jan 5, 2018
  16. 26/31 merge-recursive: avoid clobbering untracked files with directory renamesElijah Newren, Jan 5, 2018
  17. 27/31 merge-recursive: fix overwriting dirty files involved in renamesElijah Newren, Jan 5, 2018
  18. 24/31 merge-recursive: when comparing files, don't include treesElijah Newren, Jan 5, 2018
  19. 22/31 merge-recursive: add computation of collisions due to dir rename & mergingElijah Newren, Jan 5, 2018
  20. 20/31 merge-recursive: check for directory level conflictsElijah Newren, Jan 5, 2018
  21. 21/31 merge-recursive: add a new hashmap for storing file collisionsElijah Newren, Jan 5, 2018
  22. 10/31 directory rename detection: tests for handling overwriting untracked filesElijah Newren, Jan 5, 2018
  23. 16/31 merge-recursive: split out code for determining diff_filepairsElijah Newren, Jan 5, 2018
  24. 06/31 directory rename detection: testcases checking which side did the renameElijah Newren, Jan 5, 2018
  25. 14/31 merge-recursive: fix leaks of allocated renames and diff_filepairsElijah Newren, Jan 5, 2018
  26. 09/31 directory rename detection: miscellaneous testcases to complete coverageElijah Newren, Jan 5, 2018
  27. 13/31 merge-recursive: introduce new functions to handle rename logicElijah Newren, Jan 5, 2018
  28. 02/31 directory rename detection: directory splitting testcasesElijah Newren, Jan 5, 2018
  29. 11/31 directory rename detection: tests for handling overwriting dirty filesElijah Newren, Jan 5, 2018
  30. 12/31 merge-recursive: move the get_renames() functionElijah Newren, Jan 5, 2018
  31. 04/31 directory rename detection: partially renamed directory testcase/discussionElijah Newren, Jan 5, 2018
  32. 03/31 directory rename detection: testcases to avoid taking detection too farElijah Newren, Jan 5, 2018
  33. SZEDER GáborJan 26, 2018
  34. Elijah NewrenJan 26, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.