(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'Test cherry-pick with directory/file conflicts'>)} spids: [4] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (C {<test_expect_success>} {(SQ <'Initialize repository'>)} {(SQ <'\n'> <'\tmkdir a &&\n'> <'\t>a/f &&\n'> <'\tgit add a &&\n'> <'\tgit commit -m a\n'>)} ) (C {<test_expect_success>} {(SQ <'Setup rename across paths each below D/F conflicts'>)} { (SQ <'\n'> <'\tmkdir b &&\n'> <'\ttest_ln_s_add ../a b/a &&\n'> <'\tgit commit -m b &&\n'> <'\n'> <'\tgit checkout -b branch &&\n'> <'\trm b/a &&\n'> <'\tgit mv a b/a &&\n'> <'\ttest_ln_s_add b/a a &&\n'> <'\tgit commit -m swap &&\n'> <'\n'> <'\t>f1 &&\n'> <'\tgit add f1 &&\n'> <'\tgit commit -m f1\n'> ) } ) (C {<test_expect_success>} {(SQ <'Cherry-pick succeeds with rename across D/F conflicts'>)} { (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout master^0 &&\n'> <'\tgit cherry-pick branch\n'> ) } ) (C {<test_expect_success>} {(SQ <'Setup rename with file on one side matching directory name on other'>)} { (SQ <'\n'> <'\tgit checkout --orphan nick-testcase &&\n'> <'\tgit rm -rf . &&\n'> <'\n'> <'\t>empty &&\n'> <'\tgit add empty &&\n'> <'\tgit commit -m "Empty file" &&\n'> <'\n'> <'\tgit checkout -b simple &&\n'> <'\tmv empty file &&\n'> <'\tmkdir empty &&\n'> <'\tmv file empty &&\n'> <'\tgit add empty/file &&\n'> <'\tgit commit -m "Empty file under empty dir" &&\n'> <'\n'> <'\techo content >newfile &&\n'> <'\tgit add newfile &&\n'> <'\tgit commit -m "New file"\n'> ) } ) (C {<test_expect_success>} {(SQ <'Cherry-pick succeeds with was_a_dir/file -> was_a_dir (resolve)'>)} { (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout -q nick-testcase^0 &&\n'> <'\tgit cherry-pick --strategy=resolve simple\n'> ) } ) (C {<test_expect_success>} {(SQ <'Cherry-pick succeeds with was_a_dir/file -> was_a_dir (recursive)'>)} { (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout -q nick-testcase^0 &&\n'> <'\tgit cherry-pick --strategy=recursive simple\n'> ) } ) (C {<test_expect_success>} {(SQ <'Setup rename with file on one side matching different dirname on other'>)} { (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout --orphan mergeme &&\n'> <'\tgit rm -rf . &&\n'> <'\n'> <'\tmkdir sub &&\n'> <'\tmkdir othersub &&\n'> <'\techo content > sub/file &&\n'> <'\techo foo > othersub/whatever &&\n'> <'\tgit add -A &&\n'> <'\tgit commit -m "Common commit" &&\n'> <'\n'> <'\tgit rm -rf othersub &&\n'> <'\tgit mv sub/file othersub &&\n'> <'\tgit commit -m "Commit to merge" &&\n'> <'\n'> <'\tgit checkout -b newhead mergeme~1 &&\n'> <'\t>independent-change &&\n'> <'\tgit add independent-change &&\n'> <'\tgit commit -m "Completely unrelated change"\n'> ) } ) (C {<test_expect_success>} {(SQ <'Cherry-pick with rename to different D/F conflict succeeds (resolve)'>)} { (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout -q newhead^0 &&\n'> <'\tgit cherry-pick --strategy=resolve mergeme\n'> ) } ) (C {<test_expect_success>} {(SQ <'Cherry-pick with rename to different D/F conflict succeeds (recursive)'>)} { (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout -q newhead^0 &&\n'> <'\tgit cherry-pick --strategy=recursive mergeme\n'> ) } ) (C {<test_done>}) ] )