(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git rebase --merge --skip tests'>)}
          spids: [13]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (C {<test_expect_success>} {<setup>} 
      {
        (SQ <'\n'> <'\techo hello > hello &&\n'> <'\tgit add hello &&\n'> 
          <'\tgit commit -m "hello" &&\n'> <'\tgit branch skip-reference &&\n'> <'\n'> <'\techo world >> hello &&\n'> 
          <'\tgit commit -a -m "hello world" &&\n'> <'\techo goodbye >> hello &&\n'> <'\tgit commit -a -m "goodbye" &&\n'> <'\n'> 
          <'\tgit checkout -f skip-reference &&\n'> <'\techo moo > hello &&\n'> <'\tgit commit -a -m "we should skip this" &&\n'> <'\techo moo > cow &&\n'> 
          <'\tgit add cow &&\n'> <'\tgit commit -m "this should not be skipped" &&\n'> <'\tgit branch pre-rebase skip-reference &&\n'> 
          <'\tgit branch skip-merge skip-reference\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'rebase with git am -3 (default)'>)} 
      {(SQ <'\n'> <'\ttest_must_fail git rebase master\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'rebase --skip can not be used with other options'>)} 
      {
        (SQ <'\n'> <'\ttest_must_fail git rebase -v --skip &&\n'> 
          <'\ttest_must_fail git rebase --skip -v\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'rebase --skip with am -3'>)} 
      {(SQ <'\n'> <'\tgit rebase --skip\n'> <'\t'>)}
    )
    (C {<test_expect_success>} {(SQ <'rebase moves back to skip-reference'>)} 
      {
        (SQ <'\n'> <'\ttest refs/heads/skip-reference = $(git symbolic-ref HEAD) &&\n'> 
          <'\tgit branch post-rebase &&\n'> <'\tgit reset --hard pre-rebase &&\n'> <'\ttest_must_fail git rebase master &&\n'> 
          <'\techo "hello" > hello &&\n'> <'\tgit add hello &&\n'> <'\tgit rebase --continue &&\n'> 
          <'\ttest refs/heads/skip-reference = $(git symbolic-ref HEAD) &&\n'> <'\tgit reset --hard post-rebase\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'checkout skip-merge'>)} {(SQ <'git checkout -f skip-merge'>)})
    (C {<test_expect_success>} {(SQ <'rebase with --merge'>)} 
      {(SQ <'\n'> <'\ttest_must_fail git rebase --merge master\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'rebase --skip with --merge'>)} 
      {(SQ <'\n'> <'\tgit rebase --skip\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'merge and reference trees equal'>)} 
      {(SQ <'\n'> <'\ttest -z "$(git diff-tree skip-merge skip-reference)"\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'moved back to branch correctly'>)} 
      {(SQ <'\n'> <'\ttest refs/heads/skip-merge = $(git symbolic-ref HEAD)\n'>)}
    )
    (C {<test_debug>} {(SQ <'gitk --all & sleep 1'>)})
    (C {<test_done>})
  ]
)