(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: 
            {
              (SQ <"Test cherry-pick continuation features\n"> <"\n"> 
                <" +  conflicting: rewrites unrelated to conflicting\n"> <"  + yetanotherpick: rewrites foo to e\n"> <"  + anotherpick: rewrites foo to d\n"> 
                <"  + picked: rewrites foo to c\n"> <"  + unrelatedpick: rewrites unrelated to reallyunrelated\n"> <"  + base: rewrites foo to b\n"> 
                <"  + initial: writes foo as a, unrelated as unrelated\n"> <"\n">
              )
            }
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:_r10)
          op: Equal
          rhs: {(SQ <"\\1\\1\\1\\1\\1\\1\\1\\1\\1\\1">)}
          spids: [27]
        )
      ]
      spids: [27]
    )
    (FuncDef
      name: pristine_detach
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(git)} {(cherry-pick)} {(--quit)})
                (AndOr
                  children: [
                    (C {(git)} {(checkout)} {(-f)} {(DQ ($ VSub_Number "$1") ("^0"))})
                    (AndOr
                      children: [
                        (C {(git)} {(read-tree)} {(-u)} {(--reset)} {(HEAD)})
                        (C {(git)} {(clean)} {(-d)} {(-f)} {(-f)} {(-q)} {(-x)})
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [38]
        )
      spids: [33 37]
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <"\n"> <"\tgit config advice.detachedhead false &&\n"> <"\techo unrelated >unrelated &&\n"> 
          <"\tgit add unrelated &&\n"> <"\ttest_commit initial foo a &&\n"> <"\ttest_commit base foo b &&\n"> 
          <"\ttest_commit unrelatedpick unrelated reallyunrelated &&\n"> <"\ttest_commit picked foo c &&\n"> <"\ttest_commit anotherpick foo d &&\n"> 
          <"\ttest_commit yetanotherpick foo e &&\n"> <"\tpristine_detach initial &&\n"> <"\ttest_commit conflicting unrelated\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cherry-pick persists data on failure">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick -s base..anotherpick &&\n"> <"\ttest_path_is_dir .git/sequencer &&\n"> <"\ttest_path_is_file .git/sequencer/head &&\n"> 
          <"\ttest_path_is_file .git/sequencer/todo &&\n"> <"\ttest_path_is_file .git/sequencer/opts\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cherry-pick mid-cherry-pick-sequence">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_must_fail git cherry-pick base..anotherpick &&\n"> <"\ttest_cmp_rev picked CHERRY_PICK_HEAD &&\n"> 
          <"\t# \"oops, I forgot that these patches rely on the change from base\"\n"> <"\tgit checkout HEAD foo &&\n"> <"\tgit cherry-pick base &&\n"> <"\tgit cherry-pick picked &&\n"> 
          <"\tgit cherry-pick --continue &&\n"> <"\tgit diff --exit-code anotherpick\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cherry-pick persists opts correctly">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <
"\ttest_expect_code 128 git cherry-pick -s -m 1 --strategy=recursive -X patience -X ours initial..anotherpick &&\n"
          > <"\ttest_path_is_dir .git/sequencer &&\n"> <"\ttest_path_is_file .git/sequencer/head &&\n"> 
          <"\ttest_path_is_file .git/sequencer/todo &&\n"> <"\ttest_path_is_file .git/sequencer/opts &&\n"> <"\techo \"true\" >expect &&\n"> 
          <"\tgit config --file=.git/sequencer/opts --get-all options.signoff >actual &&\n"> <"\ttest_cmp expect actual &&\n"> <"\techo \"1\" >expect &&\n"> 
          <"\tgit config --file=.git/sequencer/opts --get-all options.mainline >actual &&\n"> <"\ttest_cmp expect actual &&\n"> <"\techo \"recursive\" >expect &&\n"> 
          <"\tgit config --file=.git/sequencer/opts --get-all options.strategy >actual &&\n"> <"\ttest_cmp expect actual &&\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\tpatience\n"> <"\tours\n"> 
          <"\tEOF\n"> <"\tgit config --file=.git/sequencer/opts --get-all options.strategy-option >actual &&\n"> 
          <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cherry-pick cleans up sequencer state upon success">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> <"\tgit cherry-pick initial..picked &&\n"> 
          <"\ttest_path_is_missing .git/sequencer\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--quit does not complain when no cherry-pick is in progress">)} 
      {(SQ <"\n"> <"\tpristine_detach initial &&\n"> <"\tgit cherry-pick --quit\n">)}
    )
    (C {(test_expect_success)} {(SQ <"--abort requires cherry-pick in progress">)} 
      {(SQ <"\n"> <"\tpristine_detach initial &&\n"> <"\ttest_must_fail git cherry-pick --abort\n">)}
    )
    (C {(test_expect_success)} {(SQ <"--quit cleans up sequencer state">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick base..picked &&\n"> <"\tgit cherry-pick --quit &&\n"> <"\ttest_path_is_missing .git/sequencer\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--quit keeps HEAD and conflicted index intact">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\tOBJID\n"> 
          <"\t:100644 100644 OBJID OBJID M\tunrelated\n"> <"\tOBJID\n"> <"\t:000000 100644 OBJID OBJID A\tfoo\n"> <"\t:000000 100644 OBJID OBJID A\tunrelated\n"> 
          <"\tEOF\n"> <"\ttest_expect_code 1 git cherry-pick base..picked &&\n"> <"\tgit cherry-pick --quit &&\n"> 
          <"\ttest_path_is_missing .git/sequencer &&\n"> <"\ttest_must_fail git update-index --refresh &&\n"> <"\t{\n"> <"\t\tgit rev-list HEAD |\n"> 
          <"\t\tgit diff-tree --root --stdin |\n"> <"\t\tsed \"s/$_x40/OBJID/g\"\n"> <"\t} >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--abort to cancel multiple cherry-pick">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick base..anotherpick &&\n"> <"\tgit cherry-pick --abort &&\n"> <"\ttest_path_is_missing .git/sequencer &&\n"> 
          <"\ttest_cmp_rev initial HEAD &&\n"> <"\tgit update-index --refresh &&\n"> <"\tgit diff-index --exit-code HEAD\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--abort to cancel single cherry-pick">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick picked &&\n"> <"\tgit cherry-pick --abort &&\n"> <"\ttest_path_is_missing .git/sequencer &&\n"> 
          <"\ttest_cmp_rev initial HEAD &&\n"> <"\tgit update-index --refresh &&\n"> <"\tgit diff-index --exit-code HEAD\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cherry-pick --abort to cancel multiple revert">)} 
      {
        (SQ <"\n"> <"\tpristine_detach anotherpick &&\n"> 
          <"\ttest_expect_code 1 git revert base..picked &&\n"> <"\tgit cherry-pick --abort &&\n"> <"\ttest_path_is_missing .git/sequencer &&\n"> 
          <"\ttest_cmp_rev anotherpick HEAD &&\n"> <"\tgit update-index --refresh &&\n"> <"\tgit diff-index --exit-code HEAD\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"revert --abort works, too">)} 
      {
        (SQ <"\n"> <"\tpristine_detach anotherpick &&\n"> 
          <"\ttest_expect_code 1 git revert base..picked &&\n"> <"\tgit revert --abort &&\n"> <"\ttest_path_is_missing .git/sequencer &&\n"> 
          <"\ttest_cmp_rev anotherpick HEAD\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--abort to cancel single revert">)} 
      {
        (SQ <"\n"> <"\tpristine_detach anotherpick &&\n"> 
          <"\ttest_expect_code 1 git revert picked &&\n"> <"\tgit revert --abort &&\n"> <"\ttest_path_is_missing .git/sequencer &&\n"> 
          <"\ttest_cmp_rev anotherpick HEAD &&\n"> <"\tgit update-index --refresh &&\n"> <"\tgit diff-index --exit-code HEAD\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--abort keeps unrelated change, easy case">)} 
      {
        (SQ <"\n"> <"\tpristine_detach unrelatedpick &&\n"> <"\techo changed >expect &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick picked..yetanotherpick &&\n"> <"\techo changed >unrelated &&\n"> <"\tgit cherry-pick --abort &&\n"> <"\ttest_cmp expect unrelated\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--abort refuses to clobber unrelated change, harder case">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> <"\techo changed >expect &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick base..anotherpick &&\n"> <"\techo changed >unrelated &&\n"> <"\ttest_must_fail git cherry-pick --abort &&\n"> 
          <"\ttest_cmp expect unrelated &&\n"> <"\tgit rev-list HEAD >log &&\n"> <"\ttest_line_count = 2 log &&\n"> 
          <"\ttest_must_fail git update-index --refresh &&\n"> <"\n"> <"\tgit checkout unrelated &&\n"> <"\tgit cherry-pick --abort &&\n"> 
          <"\ttest_cmp_rev initial HEAD\n">
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ <"cherry-pick still writes sequencer state when one commit is left">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick base..picked &&\n"> <"\ttest_path_is_dir .git/sequencer &&\n"> <"\techo \"resolved\" >foo &&\n"> <"\tgit add foo &&\n"> 
          <"\tgit commit &&\n"> <"\t{\n"> <"\t\tgit rev-list HEAD |\n"> <"\t\tgit diff-tree --root --stdin |\n"> 
          <"\t\tsed \"s/$_x40/OBJID/g\"\n"> <"\t} >actual &&\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\tOBJID\n"> 
          <"\t:100644 100644 OBJID OBJID M\tfoo\n"> <"\tOBJID\n"> <"\t:100644 100644 OBJID OBJID M\tunrelated\n"> <"\tOBJID\n"> 
          <"\t:000000 100644 OBJID OBJID A\tfoo\n"> <"\t:000000 100644 OBJID OBJID A\tunrelated\n"> <"\tEOF\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--abort after last commit in sequence">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick base..picked &&\n"> <"\tgit cherry-pick --abort &&\n"> <"\ttest_path_is_missing .git/sequencer &&\n"> 
          <"\ttest_cmp_rev initial HEAD &&\n"> <"\tgit update-index --refresh &&\n"> <"\tgit diff-index --exit-code HEAD\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cherry-pick does not implicitly stomp an existing operation">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick base..anotherpick &&\n"> <"\ttest-chmtime -v +0 .git/sequencer >expect &&\n"> 
          <"\ttest_expect_code 128 git cherry-pick unrelatedpick &&\n"> <"\ttest-chmtime -v +0 .git/sequencer >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--continue complains when no cherry-pick is in progress">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 128 git cherry-pick --continue\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--continue complains when there are unresolved conflicts">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick base..anotherpick &&\n"> <"\ttest_expect_code 128 git cherry-pick --continue\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--continue of single cherry-pick">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> <"\techo c >expect &&\n"> 
          <"\ttest_must_fail git cherry-pick picked &&\n"> <"\techo c >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit cherry-pick --continue &&\n"> <"\n"> 
          <"\ttest_cmp expect foo &&\n"> <"\ttest_cmp_rev initial HEAD^ &&\n"> <"\tgit diff --exit-code HEAD &&\n"> 
          <"\ttest_must_fail git rev-parse --verify CHERRY_PICK_HEAD\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--continue of single revert">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> <"\techo resolved >expect &&\n"> 
          <"\techo \"Revert \\\"picked\\\"\" >expect.msg &&\n"> <"\ttest_must_fail git revert picked &&\n"> <"\techo resolved >foo &&\n"> <"\tgit add foo &&\n"> 
          <"\tgit cherry-pick --continue &&\n"> <"\n"> <"\tgit diff --exit-code HEAD &&\n"> <"\ttest_cmp expect foo &&\n"> 
          <"\ttest_cmp_rev initial HEAD^ &&\n"> <"\tgit diff-tree -s --pretty=tformat:%s HEAD >msg &&\n"> <"\ttest_cmp expect.msg msg &&\n"> 
          <"\ttest_must_fail git rev-parse --verify CHERRY_PICK_HEAD &&\n"> <"\ttest_must_fail git rev-parse --verify REVERT_HEAD\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--continue after resolving conflicts">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> <"\techo d >expect &&\n"> 
          <"\tcat >expect.log <<-\\EOF &&\n"> <"\tOBJID\n"> <"\t:100644 100644 OBJID OBJID M\tfoo\n"> <"\tOBJID\n"> 
          <"\t:100644 100644 OBJID OBJID M\tfoo\n"> <"\tOBJID\n"> <"\t:100644 100644 OBJID OBJID M\tunrelated\n"> <"\tOBJID\n"> 
          <"\t:000000 100644 OBJID OBJID A\tfoo\n"> <"\t:000000 100644 OBJID OBJID A\tunrelated\n"> <"\tEOF\n"> 
          <"\ttest_must_fail git cherry-pick base..anotherpick &&\n"> <"\techo c >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit cherry-pick --continue &&\n"> <"\t{\n"> 
          <"\t\tgit rev-list HEAD |\n"> <"\t\tgit diff-tree --root --stdin |\n"> <"\t\tsed \"s/$_x40/OBJID/g\"\n"> <"\t} >actual.log &&\n"> 
          <"\ttest_cmp expect foo &&\n"> <"\ttest_cmp expect.log actual.log\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--continue after resolving conflicts and committing">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick base..anotherpick &&\n"> <"\techo \"c\" >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit commit &&\n"> 
          <"\tgit cherry-pick --continue &&\n"> <"\ttest_path_is_missing .git/sequencer &&\n"> <"\t{\n"> <"\t\tgit rev-list HEAD |\n"> 
          <"\t\tgit diff-tree --root --stdin |\n"> <"\t\tsed \"s/$_x40/OBJID/g\"\n"> <"\t} >actual &&\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\tOBJID\n"> 
          <"\t:100644 100644 OBJID OBJID M\tfoo\n"> <"\tOBJID\n"> <"\t:100644 100644 OBJID OBJID M\tfoo\n"> <"\tOBJID\n"> 
          <"\t:100644 100644 OBJID OBJID M\tunrelated\n"> <"\tOBJID\n"> <"\t:000000 100644 OBJID OBJID A\tfoo\n"> <"\t:000000 100644 OBJID OBJID A\tunrelated\n"> 
          <"\tEOF\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--continue asks for help after resolving patch to nil">)} 
      {
        (SQ <"\n"> <"\tpristine_detach conflicting &&\n"> 
          <"\ttest_must_fail git cherry-pick initial..picked &&\n"> <"\n"> <"\ttest_cmp_rev unrelatedpick CHERRY_PICK_HEAD &&\n"> <"\tgit checkout HEAD -- unrelated &&\n"> 
          <"\ttest_must_fail git cherry-pick --continue 2>msg &&\n"> <"\ttest_i18ngrep \"The previous cherry-pick is now empty\" msg\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"follow advice and skip nil patch">)} 
      {
        (SQ <"\n"> <"\tpristine_detach conflicting &&\n"> 
          <"\ttest_must_fail git cherry-pick initial..picked &&\n"> <"\n"> <"\tgit checkout HEAD -- unrelated &&\n"> <"\ttest_must_fail git cherry-pick --continue &&\n"> 
          <"\tgit reset &&\n"> <"\tgit cherry-pick --continue &&\n"> <"\n"> <"\tgit rev-list initial..HEAD >commits &&\n"> 
          <"\ttest_line_count = 3 commits\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--continue respects opts">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick -x base..anotherpick &&\n"> <"\techo \"c\" >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit commit &&\n"> 
          <"\tgit cherry-pick --continue &&\n"> <"\ttest_path_is_missing .git/sequencer &&\n"> <"\tgit cat-file commit HEAD >anotherpick_msg &&\n"> 
          <"\tgit cat-file commit HEAD~1 >picked_msg &&\n"> <"\tgit cat-file commit HEAD~2 >unrelatedpick_msg &&\n"> 
          <"\tgit cat-file commit HEAD~3 >initial_msg &&\n"> <"\ttest_must_fail grep \"cherry picked from\" initial_msg &&\n"> 
          <"\tgrep \"cherry picked from\" unrelatedpick_msg &&\n"> <"\tgrep \"cherry picked from\" picked_msg &&\n"> <"\tgrep \"cherry picked from\" anotherpick_msg\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--continue of single-pick respects -x">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_must_fail git cherry-pick -x picked &&\n"> <"\techo c >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit cherry-pick --continue &&\n"> 
          <"\ttest_path_is_missing .git/sequencer &&\n"> <"\tgit cat-file commit HEAD >msg &&\n"> <"\tgrep \"cherry picked from\" msg\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"--continue respects -x in first commit in multi-pick">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_must_fail git cherry-pick -x picked anotherpick &&\n"> <"\techo c >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit cherry-pick --continue &&\n"> 
          <"\ttest_path_is_missing .git/sequencer &&\n"> <"\tgit cat-file commit HEAD^ >msg &&\n"> <"\tpicked=$(git rev-parse --verify picked) &&\n"> 
          <"\tgrep \"cherry picked from.*$picked\" msg\n">
        )
      }
    )
    (C {(test_expect_failure)} {(SQ <"--signoff is automatically propagated to resolved conflict">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick --signoff base..anotherpick &&\n"> <"\techo \"c\" >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit commit &&\n"> 
          <"\tgit cherry-pick --continue &&\n"> <"\ttest_path_is_missing .git/sequencer &&\n"> <"\tgit cat-file commit HEAD >anotherpick_msg &&\n"> 
          <"\tgit cat-file commit HEAD~1 >picked_msg &&\n"> <"\tgit cat-file commit HEAD~2 >unrelatedpick_msg &&\n"> 
          <"\tgit cat-file commit HEAD~3 >initial_msg &&\n"> <"\ttest_must_fail grep \"Signed-off-by:\" initial_msg &&\n"> 
          <"\tgrep \"Signed-off-by:\" unrelatedpick_msg &&\n"> <"\ttest_must_fail grep \"Signed-off-by:\" picked_msg &&\n"> 
          <"\tgrep \"Signed-off-by:\" anotherpick_msg\n">
        )
      }
    )
    (C {(test_expect_failure)} 
      {(SQ <"--signoff dropped for implicit commit of resolution, multi-pick case">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_must_fail git cherry-pick -s picked anotherpick &&\n"> <"\techo c >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit cherry-pick --continue &&\n"> <"\n"> 
          <"\tgit diff --exit-code HEAD &&\n"> <"\ttest_cmp_rev initial HEAD^^ &&\n"> <"\tgit cat-file commit HEAD^ >msg &&\n"> 
          <"\t! grep Signed-off-by: msg\n">
        )
      }
    )
    (C {(test_expect_failure)} 
      {(SQ <"sign-off needs to be reaffirmed after conflict resolution, single-pick case">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_must_fail git cherry-pick -s picked &&\n"> <"\techo c >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit cherry-pick --continue &&\n"> <"\n"> 
          <"\tgit diff --exit-code HEAD &&\n"> <"\ttest_cmp_rev initial HEAD^ &&\n"> <"\tgit cat-file commit HEAD >msg &&\n"> 
          <"\t! grep Signed-off-by: msg\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"malformed instruction sheet 1">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick base..anotherpick &&\n"> <"\techo \"resolved\" >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit commit &&\n"> 
          <"\tsed \"s/pick /pick/\" .git/sequencer/todo >new_sheet &&\n"> <"\tcp new_sheet .git/sequencer/todo &&\n"> <"\ttest_expect_code 128 git cherry-pick --continue\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"malformed instruction sheet 2">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick base..anotherpick &&\n"> <"\techo \"resolved\" >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit commit &&\n"> 
          <"\tsed \"s/pick/revert/\" .git/sequencer/todo >new_sheet &&\n"> <"\tcp new_sheet .git/sequencer/todo &&\n"> <"\ttest_expect_code 128 git cherry-pick --continue\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"empty commit set">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 128 git cherry-pick base..base\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"malformed instruction sheet 3">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick base..anotherpick &&\n"> <"\techo \"resolved\" >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit commit &&\n"> 
          <"\tsed \"s/pick \\([0-9a-f]*\\)/pick $_r10/\" .git/sequencer/todo >new_sheet &&\n"> <"\tcp new_sheet .git/sequencer/todo &&\n"> <"\ttest_expect_code 128 git cherry-pick --continue\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"instruction sheet, fat-fingers version">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick base..anotherpick &&\n"> <"\techo \"c\" >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit commit &&\n"> 
          <"\tsed \"s/pick \\([0-9a-f]*\\)/pick \t \\1 \t/\" .git/sequencer/todo >new_sheet &&\n"> <"\tcp new_sheet .git/sequencer/todo &&\n"> <"\tgit cherry-pick --continue\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"commit descriptions in insn sheet are optional">)} 
      {
        (SQ <"\n"> <"\tpristine_detach initial &&\n"> 
          <"\ttest_expect_code 1 git cherry-pick base..anotherpick &&\n"> <"\techo \"c\" >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit commit &&\n"> 
          <"\tcut -d\" \" -f1,2 .git/sequencer/todo >new_sheet &&\n"> <"\tcp new_sheet .git/sequencer/todo &&\n"> <"\tgit cherry-pick --continue &&\n"> 
          <"\ttest_path_is_missing .git/sequencer &&\n"> <"\tgit rev-list HEAD >commits &&\n"> <"\ttest_line_count = 4 commits\n">
        )
      }
    )
    (C {(test_done)})
  ]
)