On Thu, Jun 30 2022, Elijah Newren via GitGitGadget wrote: > From: Elijah Newren <newren@xxxxxxxxx> > +test_setup_12l () { > + test_create_repo 12l_$1 && Can & should just be "git init", see f0d4d398e28 (test-lib: split up and deprecate test_create_repo(), 2021-05-10). > + ( > + cd 12l_$1 && > + > + mkdir -p sub1 sub2 The "-p" here isn't needed, you're not creating recursive directories. > + git ls-files -s >out && > + test_line_count = 5 out && Can't this just use test_stdout_line_count? Except... > + > + git rev-parse >actual \ > + :0:sub3/file :0:sub3/newfile :0:sub3/sub2/other \ > + :2:sub1/sub2/new_add_add_file \ > + :3:sub1/sub2/new_add_add_file && > + git rev-parse >expect \ > + O:sub1/file B:sub1/newfile O:sub2/other \ > + A:sub2/new_add_add_file \ > + B:sub1/sub2/new_add_add_file && > + test_cmp expect actual && > + > + git ls-files -o >actual && > + test_write_lines actual expect out >expect && > + test_cmp expect actual This test seems a bit odd, here we're just checking that we've created scratch files for the internal use of our test, why is it important that we have an "out" file, when the only reason we have it is because we needed it for checking the "ls-files" line count above? > + ) > +' > + > +test_expect_merge_algorithm failure failure '12l (A into B): Rename into each other + add/add conflict' ' > + test_setup_12l AintoB && > + ( > + cd 12l_AintoB && > + > + git checkout -q B^0 && > + > + test_must_fail git -c merge.directoryRenames=true merge -s recursive A^0 && > + > + git ls-files -s >out && > + test_line_count = 5 out && ditto. > + git rev-parse >actual \ > + :0:sub3/file :0:sub3/newfile :0:sub3/sub2/other \ > + :2:sub1/sub2/new_add_add_file \ > + :3:sub1/sub2/new_add_add_file && > + git rev-parse >expect \ > + O:sub1/file B:sub1/newfile O:sub2/other \ > + B:sub1/sub2/new_add_add_file \ > + A:sub2/new_add_add_file && > + test_cmp expect actual && > + > + git ls-files -o >actual && > + test_write_lines actual expect out >expect && ditto