(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>})
  ]
)