(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"Test cherry-pick with directory/file conflicts">)}
          spids: [4]
        )
      ]
      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)})
  ]
)