(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:'cherry-pick should rerere for conflicts' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:20) 
          (Token id:Id.Lit_Chars val:'\techo foo >foo &&\n' span_id:21) (Token id:Id.Lit_Chars val:'\tgit add foo && test_tick && git commit -q -m 1 &&\n' span_id:22) 
          (Token id:Id.Lit_Chars val:'\techo foo-master >foo &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tgit add foo && test_tick && git commit -q -m 2 &&\n' span_id:24) 
          (Token id:Id.Lit_Chars val:'\n' span_id:25) (Token id:Id.Lit_Chars val:'\tgit checkout -b dev HEAD^ &&\n' span_id:26) 
          (Token id:Id.Lit_Chars val:'\techo foo-dev >foo &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\tgit add foo && test_tick && git commit -q -m 3 &&\n' span_id:28) 
          (Token id:Id.Lit_Chars val:'\tgit config rerere.enabled true\n' span_id:29)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'conflicting merge' span_id:36))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:40) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge master\n' span_id:41)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:fixup span_id:48))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:52) 
          (Token id:Id.Lit_Chars val:'\techo foo-dev >foo &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\tgit add foo && test_tick && git commit -q -m 4 &&\n' span_id:54) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^ &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\techo foo-dev >expect\n' span_id:56)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cherry-pick conflict' span_id:63))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:67) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git cherry-pick master &&\n'
            span_id: 68
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect foo\n' span_id:69)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:reconfigure span_id:76))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:80) 
          (Token id:Id.Lit_Chars val:'\tgit config rerere.enabled false &&\n' span_id:81) (Token id:Id.Lit_Chars val:'\tgit reset --hard\n' span_id:82)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'cherry-pick conflict without rerere' span_id:89))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:93) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git cherry-pick master &&\n'
            span_id: 94
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail test_cmp expect foo\n' span_id:95)
        )
      }
    )
    (C {(test_done)})
  ]
)