(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'test cherry-picking (and reverting) a root commit'>)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <'\n'> <'\n'> <'\techo first > file1 &&\n'> <'\tgit add file1 &&\n'> <'\ttest_tick &&\n'> 
          <'\tgit commit -m "first" &&\n'> <'\n'> <'\tgit symbolic-ref HEAD refs/heads/second &&\n'> <'\trm .git/index file1 &&\n'> 
          <'\techo second > file2 &&\n'> <'\tgit add file2 &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m "second" &&\n'> <'\n'> 
          <'\tgit symbolic-ref HEAD refs/heads/third &&\n'> <'\trm .git/index file2 &&\n'> <'\techo third > file3 &&\n'> <'\tgit add file3 &&\n'> 
          <'\ttest_tick &&\n'> <'\tgit commit -m "third"\n'> <'\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'cherry-pick a root commit'>)} 
      {
        (SQ <'\n'> <'\n'> <'\tgit checkout second^0 &&\n'> <'\tgit cherry-pick master &&\n'> 
          <'\techo first >expect &&\n'> <'\ttest_cmp expect file1\n'> <'\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'revert a root commit'>)} 
      {(SQ <'\n'> <'\n'> <'\tgit revert master &&\n'> <'\ttest_path_is_missing file1\n'> <'\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'cherry-pick a root commit with an external strategy'>)} 
      {
        (SQ <'\n'> <'\n'> <'\tgit cherry-pick --strategy=resolve master &&\n'> 
          <'\techo first >expect &&\n'> <'\ttest_cmp expect file1\n'> <'\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'revert a root commit with an external strategy'>)} 
      {
        (SQ <'\n'> <'\n'> <'\tgit revert --strategy=resolve master &&\n'> 
          <'\ttest_path_is_missing file1\n'> <'\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'cherry-pick two root commits'>)} 
      {
        (SQ <'\n'> <'\n'> <'\techo first >expect.file1 &&\n'> <'\techo second >expect.file2 &&\n'> 
          <'\techo third >expect.file3 &&\n'> <'\n'> <'\tgit checkout second^0 &&\n'> <'\tgit cherry-pick master third &&\n'> <'\n'> 
          <'\ttest_cmp expect.file1 file1 &&\n'> <'\ttest_cmp expect.file2 file2 &&\n'> <'\ttest_cmp expect.file3 file3 &&\n'> 
          <'\tgit rev-parse --verify HEAD^^ &&\n'> <'\ttest_must_fail git rev-parse --verify HEAD^^^\n'> <'\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)