Merge branch 'mh/blame-worktree' into maint
[gitweb.git] / t / t3420-rebase-autostash.sh
index 944154b2e0ad7da5ddacdde5c22847babf1909c9..532ff5cbd1cbbce8bdbc83660d3084b938886c60 100755 (executable)
@@ -192,4 +192,35 @@ test_expect_success 'abort rebase -i with --autostash' '
        test_cmp expected file0
 '
 
+test_expect_success 'restore autostash on editor failure' '
+       test_when_finished "git reset --hard" &&
+       echo uncommitted-content >file0 &&
+       (
+               test_set_editor "false" &&
+               test_must_fail git rebase -i --autostash HEAD^
+       ) &&
+       echo uncommitted-content >expected &&
+       test_cmp expected file0
+'
+
+test_expect_success 'autostash is saved on editor failure with conflict' '
+       test_when_finished "git reset --hard" &&
+       echo uncommitted-content >file0 &&
+       (
+               write_script abort-editor.sh <<-\EOF &&
+                       echo conflicting-content >file0
+                       exit 1
+               EOF
+               test_set_editor "$(pwd)/abort-editor.sh" &&
+               test_must_fail git rebase -i --autostash HEAD^ &&
+               rm -f abort-editor.sh
+       ) &&
+       echo conflicting-content >expected &&
+       test_cmp expected file0 &&
+       git checkout file0 &&
+       git stash pop &&
+       echo uncommitted-content >expected &&
+       test_cmp expected file0
+'
+
 test_done