(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: 
            {
              (SQ <"test cherry-pick and revert with renames\n"> <"\n"> <"  --\n"> 
                <"   + rename2: renames oops to opos\n"> <"  +  rename1: renames oops to spoo\n"> <"  +  added:   adds extra line to oops\n"> 
                <"  ++ initial: has lines in oops\n"> <"\n">
              )
            }
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <"\n"> <"\n"> <"\tfor l in a b c d e f g h i j k l m n o\n"> <"\tdo\n"> 
          <"\t\techo $l$l$l$l$l$l$l$l$l\n"> <"\tdone >oops &&\n"> <"\n"> <"\ttest_tick &&\n"> <"\tgit add oops &&\n"> 
          <"\tgit commit -m initial &&\n"> <"\tgit tag initial &&\n"> <"\n"> <"\ttest_tick &&\n"> 
          <"\techo \"Add extra line at the end\" >>oops &&\n"> <"\tgit commit -a -m added &&\n"> <"\tgit tag added &&\n"> <"\n"> <"\ttest_tick &&\n"> 
          <"\tgit mv oops spoo &&\n"> <"\tgit commit -m rename1 &&\n"> <"\tgit tag rename1 &&\n"> <"\n"> <"\ttest_tick &&\n"> 
          <"\tgit checkout -b side initial &&\n"> <"\tgit mv oops opos &&\n"> <"\tgit commit -m rename2 &&\n"> <"\tgit tag rename2\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cherry-pick --nonsense">)} 
      {
        (SQ <"\n"> <"\n"> <"\tpos=$(git rev-parse HEAD) &&\n"> <"\tgit diff --exit-code HEAD &&\n"> 
          <"\ttest_must_fail git cherry-pick --nonsense 2>msg &&\n"> <"\tgit diff --exit-code HEAD \"$pos\" &&\n"> <"\ttest_i18ngrep ">
        ) (Lit_Other "[") (Uu) (Lit_Other "]") (sage) (Lit_Other ":") (SQ <" msg\n">)
      }
    )
    (C {(test_expect_success)} {(SQ <"revert --nonsense">)} 
      {
        (SQ <"\n"> <"\n"> <"\tpos=$(git rev-parse HEAD) &&\n"> <"\tgit diff --exit-code HEAD &&\n"> 
          <"\ttest_must_fail git revert --nonsense 2>msg &&\n"> <"\tgit diff --exit-code HEAD \"$pos\" &&\n"> <"\ttest_i18ngrep ">
        ) (Lit_Other "[") (Uu) (Lit_Other "]") (sage) (Lit_Other ":") (SQ <" msg\n">)
      }
    )
    (C {(test_expect_success)} {(SQ <"cherry-pick after renaming branch">)} 
      {
        (SQ <"\n"> <"\n"> <"\tgit checkout rename2 &&\n"> <"\tgit cherry-pick added &&\n"> 
          <"\ttest $(git rev-parse HEAD^) = $(git rev-parse rename2) &&\n"> <"\ttest -f opos &&\n"> <"\tgrep \"Add extra line at the end\" opos &&\n"> 
          <"\tgit reflog -1 | grep cherry-pick\n"> <"\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"revert after renaming branch">)} 
      {
        (SQ <"\n"> <"\n"> <"\tgit checkout rename1 &&\n"> <"\tgit revert added &&\n"> 
          <"\ttest $(git rev-parse HEAD^) = $(git rev-parse rename1) &&\n"> <"\ttest -f spoo &&\n"> <"\t! grep \"Add extra line at the end\" spoo &&\n"> 
          <"\tgit reflog -1 | grep revert\n"> <"\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cherry-pick on stat-dirty working tree">)} 
      {
        (SQ <"\n"> <"\tgit clone . copy &&\n"> <"\t(\n"> <"\t\tcd copy &&\n"> 
          <"\t\tgit checkout initial &&\n"> <"\t\ttest-chmtime +40 oops &&\n"> <"\t\tgit cherry-pick added\n"> <"\t)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"revert forbidden on dirty working tree">)} 
      {
        (SQ <"\n"> <"\n"> <"\techo content >extra_file &&\n"> <"\tgit add extra_file &&\n"> 
          <"\ttest_must_fail git revert HEAD 2>errors &&\n"> <"\ttest_i18ngrep \"your local changes would be overwritten by \" errors\n"> <"\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cherry-pick on unborn branch">)} 
      {
        (SQ <"\n"> <"\tgit checkout --orphan unborn &&\n"> <"\tgit rm --cached -r . &&\n"> 
          <"\trm -rf * &&\n"> <"\tgit cherry-pick initial &&\n"> <"\tgit diff --quiet initial &&\n"> 
          <"\t! test_cmp_rev initial HEAD\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cherry-pick \"-\" to pick from previous branch">)} 
      {
        (SQ <"\n"> <"\tgit checkout unborn &&\n"> <"\ttest_commit to-pick actual content &&\n"> 
          <"\tgit checkout master &&\n"> <"\tgit cherry-pick - &&\n"> <"\techo content >expect &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cherry-pick \"-\" is meaningless without checkout">)} 
      {
        (SQ <"\n"> <"\ttest_create_repo afresh &&\n"> <"\t(\n"> <"\t\tcd afresh &&\n"> 
          <"\t\ttest_commit one &&\n"> <"\t\ttest_commit two &&\n"> <"\t\ttest_commit three &&\n"> <"\t\ttest_must_fail git cherry-pick -\n"> 
          <"\t)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cherry-pick \"-\" works with arguments">)} 
      {
        (SQ <"\n"> <"\tgit checkout -b side-branch &&\n"> <"\ttest_commit change actual change &&\n"> 
          <"\tgit checkout master &&\n"> <"\tgit cherry-pick -s - &&\n"> 
          <"\techo \"Signed-off-by: C O Mitter <committer@example.com>\" >expect &&\n"> <"\tgit cat-file commit HEAD | grep ^Signed-off-by: >signoff &&\n"> <"\ttest_cmp expect signoff &&\n"> 
          <"\techo change >expect &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_done)})
  ]
)