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