Merge branch 'rr/maint-t3510-cascade-fix'
authorJunio C Hamano <gitster@pobox.com>
Thu, 7 Jun 2012 16:07:27 +0000 (09:07 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 7 Jun 2012 16:07:27 +0000 (09:07 -0700)
* rr/maint-t3510-cascade-fix:
t3510 (cherry-pick-sequence): add missing '&&'

1  2 
t/t3510-cherry-pick-sequence.sh
index 97f371070011e2023552d9fe941dc0a406f6d09f,28412e2c65e58f06d0c4db30d62813b02218669f..f4e6450d6a88ae0abd158e52634c47a23872ad2c
@@@ -14,9 -14,6 +14,9 @@@ test_description='Test cherry-pick cont
  
  . ./test-lib.sh
  
 +# Repeat first match 10 times
 +_r10='\1\1\1\1\1\1\1\1\1\1'
 +
  pristine_detach () {
        git cherry-pick --quit &&
        git checkout -f "$1^0" &&
@@@ -31,7 -28,7 +31,7 @@@ test_cmp_rev () 
  }
  
  test_expect_success setup '
-       git config advice.detachedhead false
+       git config advice.detachedhead false &&
        echo unrelated >unrelated &&
        git add unrelated &&
        test_commit initial foo a &&
@@@ -46,7 -43,7 +46,7 @@@
  
  test_expect_success 'cherry-pick persists data on failure' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick -s base..anotherpick &&
 +      test_expect_code 1 git cherry-pick -s base..anotherpick &&
        test_path_is_dir .git/sequencer &&
        test_path_is_file .git/sequencer/head &&
        test_path_is_file .git/sequencer/todo &&
@@@ -67,7 -64,7 +67,7 @@@ test_expect_success 'cherry-pick mid-ch
  
  test_expect_success 'cherry-pick persists opts correctly' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick -s -m 1 --strategy=recursive -X patience -X ours base..anotherpick &&
 +      test_expect_code 128 git cherry-pick -s -m 1 --strategy=recursive -X patience -X ours initial..anotherpick &&
        test_path_is_dir .git/sequencer &&
        test_path_is_file .git/sequencer/head &&
        test_path_is_file .git/sequencer/todo &&
@@@ -107,7 -104,7 +107,7 @@@ test_expect_success '--abort requires c
  
  test_expect_success '--quit cleans up sequencer state' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick base..picked &&
 +      test_expect_code 1 git cherry-pick base..picked &&
        git cherry-pick --quit &&
        test_path_is_missing .git/sequencer
  '
@@@ -121,7 -118,7 +121,7 @@@ test_expect_success '--quit keeps HEAD 
        :000000 100644 OBJID OBJID A    foo
        :000000 100644 OBJID OBJID A    unrelated
        EOF
 -      test_must_fail git cherry-pick base..picked &&
 +      test_expect_code 1 git cherry-pick base..picked &&
        git cherry-pick --quit &&
        test_path_is_missing .git/sequencer &&
        test_must_fail git update-index --refresh &&
  
  test_expect_success '--abort to cancel multiple cherry-pick' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick base..anotherpick &&
 +      test_expect_code 1 git cherry-pick base..anotherpick &&
        git cherry-pick --abort &&
        test_path_is_missing .git/sequencer &&
        test_cmp_rev initial HEAD &&
  
  test_expect_success '--abort to cancel single cherry-pick' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick picked &&
 +      test_expect_code 1 git cherry-pick picked &&
        git cherry-pick --abort &&
        test_path_is_missing .git/sequencer &&
        test_cmp_rev initial HEAD &&
  
  test_expect_success 'cherry-pick --abort to cancel multiple revert' '
        pristine_detach anotherpick &&
 -      test_must_fail git revert base..picked &&
 +      test_expect_code 1 git revert base..picked &&
        git cherry-pick --abort &&
        test_path_is_missing .git/sequencer &&
        test_cmp_rev anotherpick HEAD &&
  
  test_expect_success 'revert --abort works, too' '
        pristine_detach anotherpick &&
 -      test_must_fail git revert base..picked &&
 +      test_expect_code 1 git revert base..picked &&
        git revert --abort &&
        test_path_is_missing .git/sequencer &&
        test_cmp_rev anotherpick HEAD
  
  test_expect_success '--abort to cancel single revert' '
        pristine_detach anotherpick &&
 -      test_must_fail git revert picked &&
 +      test_expect_code 1 git revert picked &&
        git revert --abort &&
        test_path_is_missing .git/sequencer &&
        test_cmp_rev anotherpick HEAD &&
  test_expect_success '--abort keeps unrelated change, easy case' '
        pristine_detach unrelatedpick &&
        echo changed >expect &&
 -      test_must_fail git cherry-pick picked..yetanotherpick &&
 +      test_expect_code 1 git cherry-pick picked..yetanotherpick &&
        echo changed >unrelated &&
        git cherry-pick --abort &&
        test_cmp expect unrelated
  test_expect_success '--abort refuses to clobber unrelated change, harder case' '
        pristine_detach initial &&
        echo changed >expect &&
 -      test_must_fail git cherry-pick base..anotherpick &&
 +      test_expect_code 1 git cherry-pick base..anotherpick &&
        echo changed >unrelated &&
        test_must_fail git cherry-pick --abort &&
        test_cmp expect unrelated &&
  
  test_expect_success 'cherry-pick still writes sequencer state when one commit is left' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick base..picked &&
 +      test_expect_code 1 git cherry-pick base..picked &&
        test_path_is_dir .git/sequencer &&
        echo "resolved" >foo &&
        git add foo &&
  
  test_expect_success '--abort after last commit in sequence' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick base..picked &&
 +      test_expect_code 1 git cherry-pick base..picked &&
        git cherry-pick --abort &&
        test_path_is_missing .git/sequencer &&
        test_cmp_rev initial HEAD &&
  
  test_expect_success 'cherry-pick does not implicitly stomp an existing operation' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick base..anotherpick &&
 +      test_expect_code 1 git cherry-pick base..anotherpick &&
        test-chmtime -v +0 .git/sequencer >expect &&
 -      test_must_fail git cherry-pick unrelatedpick &&
 +      test_expect_code 128 git cherry-pick unrelatedpick &&
        test-chmtime -v +0 .git/sequencer >actual &&
        test_cmp expect actual
  '
  
  test_expect_success '--continue complains when no cherry-pick is in progress' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick --continue
 +      test_expect_code 128 git cherry-pick --continue
  '
  
  test_expect_success '--continue complains when there are unresolved conflicts' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick base..anotherpick &&
 -      test_must_fail git cherry-pick --continue
 +      test_expect_code 1 git cherry-pick base..anotherpick &&
 +      test_expect_code 128 git cherry-pick --continue
  '
  
  test_expect_success '--continue of single cherry-pick' '
@@@ -321,7 -318,7 +321,7 @@@ test_expect_success '--continue after r
  
  test_expect_success '--continue after resolving conflicts and committing' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick base..anotherpick &&
 +      test_expect_code 1 git cherry-pick base..anotherpick &&
        echo "c" >foo &&
        git add foo &&
        git commit &&
@@@ -371,7 -368,7 +371,7 @@@ test_expect_success 'follow advice and 
  
  test_expect_success '--continue respects opts' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick -x base..anotherpick &&
 +      test_expect_code 1 git cherry-pick -x base..anotherpick &&
        echo "c" >foo &&
        git add foo &&
        git commit &&
@@@ -412,7 -409,7 +412,7 @@@ test_expect_success '--continue respect
  
  test_expect_success '--signoff is not automatically propagated to resolved conflict' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick --signoff base..anotherpick &&
 +      test_expect_code 1 git cherry-pick --signoff base..anotherpick &&
        echo "c" >foo &&
        git add foo &&
        git commit &&
@@@ -456,24 -453,24 +456,24 @@@ test_expect_success 'sign-off needs to 
  
  test_expect_success 'malformed instruction sheet 1' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick base..anotherpick &&
 +      test_expect_code 1 git cherry-pick base..anotherpick &&
        echo "resolved" >foo &&
        git add foo &&
        git commit &&
        sed "s/pick /pick/" .git/sequencer/todo >new_sheet &&
        cp new_sheet .git/sequencer/todo &&
 -      test_must_fail git cherry-pick --continue
 +      test_expect_code 128 git cherry-pick --continue
  '
  
  test_expect_success 'malformed instruction sheet 2' '
        pristine_detach initial &&
 -      test_must_fail git cherry-pick base..anotherpick &&
 +      test_expect_code 1 git cherry-pick base..anotherpick &&
        echo "resolved" >foo &&
        git add foo &&
        git commit &&
        sed "s/pick/revert/" .git/sequencer/todo >new_sheet &&
        cp new_sheet .git/sequencer/todo &&
 -      test_must_fail git cherry-pick --continue
 +      test_expect_code 128 git cherry-pick --continue
  '
  
  test_expect_success 'empty commit set' '
        test_expect_code 128 git cherry-pick base..base
  '
  
 +test_expect_success 'malformed instruction sheet 3' '
 +      pristine_detach initial &&
 +      test_expect_code 1 git cherry-pick base..anotherpick &&
 +      echo "resolved" >foo &&
 +      git add foo &&
 +      git commit &&
 +      sed "s/pick \([0-9a-f]*\)/pick $_r10/" .git/sequencer/todo >new_sheet &&
 +      cp new_sheet .git/sequencer/todo &&
 +      test_expect_code 128 git cherry-pick --continue
 +'
 +
 +test_expect_success 'instruction sheet, fat-fingers version' '
 +      pristine_detach initial &&
 +      test_expect_code 1 git cherry-pick base..anotherpick &&
 +      echo "c" >foo &&
 +      git add foo &&
 +      git commit &&
 +      sed "s/pick \([0-9a-f]*\)/pick   \1     /" .git/sequencer/todo >new_sheet &&
 +      cp new_sheet .git/sequencer/todo &&
 +      git cherry-pick --continue
 +'
 +
 +test_expect_success 'commit descriptions in insn sheet are optional' '
 +      pristine_detach initial &&
 +      test_expect_code 1 git cherry-pick base..anotherpick &&
 +      echo "c" >foo &&
 +      git add foo &&
 +      git commit &&
 +      cut -d" " -f1,2 .git/sequencer/todo >new_sheet &&
 +      cp new_sheet .git/sequencer/todo &&
 +      git cherry-pick --continue &&
 +      test_path_is_missing .git/sequencer &&
 +      git rev-list HEAD >commits &&
 +      test_line_count = 4 commits
 +'
 +
  test_done