(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: 
            {
              (SQ (Token id:Id.Lit_Chars val:'test cherry-pick and revert with renames\n' span_id:6) 
                (Token id:Id.Lit_Chars val:'\n' span_id:7) (Token id:Id.Lit_Chars val:'  --\n' span_id:8) 
                (Token
                  id: Id.Lit_Chars
                  val: '   + rename2: renames oops to opos\n'
                  span_id: 9
                ) (Token id:Id.Lit_Chars val:'  +  rename1: renames oops to spoo\n' span_id:10) 
                (Token
                  id: Id.Lit_Chars
                  val: '  +  added:   adds extra line to oops\n'
                  span_id: 11
                ) (Token id:Id.Lit_Chars val:'  ++ initial: has lines in oops\n' span_id:12) 
                (Token id:Id.Lit_Chars val:'\n' span_id:13)
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:27) (Token id:Id.Lit_Chars val:'\n' span_id:28) 
          (Token
            id: Id.Lit_Chars
            val: '\tfor l in a b c d e f g h i j k l m n o\n'
            span_id: 29
          ) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:30) 
          (Token id:Id.Lit_Chars val:'\t\techo $l$l$l$l$l$l$l$l$l\n' span_id:31) (Token id:Id.Lit_Chars val:'\tdone >oops &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit add oops &&\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit tag initial &&\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\n' span_id:38) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:39) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "Add extra line at the end" >>oops &&\n'
            span_id: 40
          ) (Token id:Id.Lit_Chars val:'\tgit commit -a -m added &&\n' span_id:41) 
          (Token id:Id.Lit_Chars val:'\tgit tag added &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\n' span_id:43) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:44) 
          (Token id:Id.Lit_Chars val:'\tgit mv oops spoo &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\tgit commit -m rename1 &&\n' span_id:46) 
          (Token id:Id.Lit_Chars val:'\tgit tag rename1 &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\n' span_id:48) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:49) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b side initial &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\tgit mv oops opos &&\n' span_id:51) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m rename2 &&\n' span_id:52) (Token id:Id.Lit_Chars val:'\tgit tag rename2\n' span_id:53)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cherry-pick --nonsense' span_id:60))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:64) (Token id:Id.Lit_Chars val:'\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\tpos=$(git rev-parse HEAD) &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code HEAD &&\n' span_id:67) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git cherry-pick --nonsense 2>msg &&\n'
            span_id: 68
          ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code HEAD "$pos" &&\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ngrep ' span_id:70)
        ) (Id.Lit_LBracket '[') (Uu) (Id.Lit_RBracket ']') (sage) (Id.Lit_Other ':') 
        (SQ (Token id:Id.Lit_Chars val:' msg\n' span_id:78))
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'revert --nonsense' span_id:85))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:89) (Token id:Id.Lit_Chars val:'\n' span_id:90) 
          (Token id:Id.Lit_Chars val:'\tpos=$(git rev-parse HEAD) &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code HEAD &&\n' span_id:92) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git revert --nonsense 2>msg &&\n'
            span_id: 93
          ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code HEAD "$pos" &&\n' span_id:94) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ngrep ' span_id:95)
        ) (Id.Lit_LBracket '[') (Uu) (Id.Lit_RBracket ']') (sage) (Id.Lit_Other ':') 
        (SQ (Token id:Id.Lit_Chars val:' msg\n' span_id:103))
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'cherry-pick after renaming branch' span_id:110))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:114) (Token id:Id.Lit_Chars val:'\n' span_id:115) 
          (Token id:Id.Lit_Chars val:'\tgit checkout rename2 &&\n' span_id:116) (Token id:Id.Lit_Chars val:'\tgit cherry-pick added &&\n' span_id:117) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse HEAD^) = $(git rev-parse rename2) &&\n'
            span_id: 118
          ) (Token id:Id.Lit_Chars val:'\ttest -f opos &&\n' span_id:119) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "Add extra line at the end" opos &&\n'
            span_id: 120
          ) (Token id:Id.Lit_Chars val:'\tgit reflog -1 | grep cherry-pick\n' span_id:121) 
          (Token id:Id.Lit_Chars val:'\n' span_id:122)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'revert after renaming branch' span_id:129))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:133) (Token id:Id.Lit_Chars val:'\n' span_id:134) 
          (Token id:Id.Lit_Chars val:'\tgit checkout rename1 &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\tgit revert added &&\n' span_id:136) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse HEAD^) = $(git rev-parse rename1) &&\n'
            span_id: 137
          ) (Token id:Id.Lit_Chars val:'\ttest -f spoo &&\n' span_id:138) 
          (Token
            id: Id.Lit_Chars
            val: '\t! grep "Add extra line at the end" spoo &&\n'
            span_id: 139
          ) (Token id:Id.Lit_Chars val:'\tgit reflog -1 | grep revert\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\n' span_id:141)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'cherry-pick on stat-dirty working tree' span_id:148))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:152) 
          (Token id:Id.Lit_Chars val:'\tgit clone . copy &&\n' span_id:153) (Token id:Id.Lit_Chars val:'\t(\n' span_id:154) 
          (Token id:Id.Lit_Chars val:'\t\tcd copy &&\n' span_id:155) (Token id:Id.Lit_Chars val:'\t\tgit checkout initial &&\n' span_id:156) 
          (Token id:Id.Lit_Chars val:'\t\ttest-chmtime +40 oops &&\n' span_id:157) (Token id:Id.Lit_Chars val:'\t\tgit cherry-pick added\n' span_id:158) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:159)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'revert forbidden on dirty working tree' span_id:166))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:170) (Token id:Id.Lit_Chars val:'\n' span_id:171) 
          (Token id:Id.Lit_Chars val:'\techo content >extra_file &&\n' span_id:172) (Token id:Id.Lit_Chars val:'\tgit add extra_file &&\n' span_id:173) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git revert HEAD 2>errors &&\n'
            span_id: 174
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "your local changes would be overwritten by " errors\n'
            span_id: 175
          ) (Token id:Id.Lit_Chars val:'\n' span_id:176)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'cherry-pick on unborn branch' span_id:183))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:187) 
          (Token id:Id.Lit_Chars val:'\tgit checkout --orphan unborn &&\n' span_id:188) (Token id:Id.Lit_Chars val:'\tgit rm --cached -r . &&\n' span_id:189) 
          (Token id:Id.Lit_Chars val:'\trm -rf * &&\n' span_id:190) (Token id:Id.Lit_Chars val:'\tgit cherry-pick initial &&\n' span_id:191) 
          (Token id:Id.Lit_Chars val:'\tgit diff --quiet initial &&\n' span_id:192) (Token id:Id.Lit_Chars val:'\t! test_cmp_rev initial HEAD\n' span_id:193)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'cherry-pick "-" to pick from previous branch' span_id:200))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:204) 
          (Token id:Id.Lit_Chars val:'\tgit checkout unborn &&\n' span_id:205) (Token id:Id.Lit_Chars val:'\ttest_commit to-pick actual content &&\n' span_id:206) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\tgit cherry-pick - &&\n' span_id:208) 
          (Token id:Id.Lit_Chars val:'\techo content >expect &&\n' span_id:209) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:210)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'cherry-pick "-" is meaningless without checkout' span_id:217))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:221) 
          (Token id:Id.Lit_Chars val:'\ttest_create_repo afresh &&\n' span_id:222) (Token id:Id.Lit_Chars val:'\t(\n' span_id:223) 
          (Token id:Id.Lit_Chars val:'\t\tcd afresh &&\n' span_id:224) (Token id:Id.Lit_Chars val:'\t\ttest_commit one &&\n' span_id:225) 
          (Token id:Id.Lit_Chars val:'\t\ttest_commit two &&\n' span_id:226) (Token id:Id.Lit_Chars val:'\t\ttest_commit three &&\n' span_id:227) 
          (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git cherry-pick -\n' span_id:228) (Token id:Id.Lit_Chars val:'\t)\n' span_id:229)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'cherry-pick "-" works with arguments' span_id:236))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:240) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b side-branch &&\n' span_id:241) (Token id:Id.Lit_Chars val:'\ttest_commit change actual change &&\n' span_id:242) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:243) (Token id:Id.Lit_Chars val:'\tgit cherry-pick -s - &&\n' span_id:244) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "Signed-off-by: C O Mitter <committer@example.com>" >expect &&\n'
            span_id: 245
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit cat-file commit HEAD | grep ^Signed-off-by: >signoff &&\n'
            span_id: 246
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect signoff &&\n' span_id:247) 
          (Token id:Id.Lit_Chars val:'\techo change >expect &&\n' span_id:248) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:249)
        )
      }
    )
    (C {(test_done)})
  ]
)