On Fri, May 10, 2013 at 10:26 AM, Ramkumar Ramachandra <artagnon@xxxxxxxxx> wrote: > diff --git a/t/t3420-rebase-autostash.sh b/t/t3420-rebase-autostash.sh > new file mode 100755 > index 0000000..8386998 > --- /dev/null > +++ b/t/t3420-rebase-autostash.sh > @@ -0,0 +1,148 @@ > +#!/bin/sh > +# > +# Copyright (c) 2013 Ramkumar Ramachandra > +# > + > +test_description='git rebase --autostash tests' > +. ./test-lib.sh > + > +test_expect_success setup ' > + echo hello-world >file0 && > + git add . && > + test_tick && > + git commit -m "initial commit" && > + git checkout -b feature-branch && > + echo another-hello >file1 && > + echo goodbye >file2 && > + git add . && > + test_tick && > + git commit -m "second commit" && > + echo final-goodbye >file3 && > + git add . && > + test_tick && > + git commit -m "third commit" Broken &&-chain. > + git checkout -b unrelated-onto-branch master && > + echo unrelated >file4 && > + git add . && > + test_tick && > + git commit -m "unrelated commit" Broken &&-chain. > + git checkout -b related-onto-branch master && > + echo conflicting-change >file2 && > + git add . && > + test_tick && > + git commit -m "related commit" > +' > + > +testrebase() { > + type=$1 > + dotest=$2 > + > + test_expect_success "rebase$type: dirty worktree, non-conflicting rebase" ' > + test_config rebase.autostash true && > + git reset --hard && > + git checkout -b rebased-feature-branch feature-branch && > + test_when_finished git branch -D rebased-feature-branch && > + echo dirty >>file3 && > + git rebase$type unrelated-onto-branch && > + grep unrelated file4 && > + grep dirty file3 && > + git checkout feature-branch > + ' > + > + test_expect_success "rebase$type: dirty index, non-conflicting rebase" ' > + test_config rebase.autostash true && > + git reset --hard && > + git checkout -b rebased-feature-branch feature-branch && > + test_when_finished git branch -D rebased-feature-branch Broken &&-chain. > + echo dirty >>file3 && > + git add file3 && > + git rebase$type unrelated-onto-branch && > + grep unrelated file4 && > + grep dirty file3 && > + git checkout feature-branch > + ' > + > + test_expect_success "rebase$type: conflicting rebase" ' > + test_config rebase.autostash true && > + git reset --hard && > + git checkout -b rebased-feature-branch feature-branch && > + test_when_finished git branch -D rebased-feature-branch && > + echo dirty >>file3 && > + test_must_fail git rebase$type related-onto-branch && > + test_path_is_file $dotest/autostash && > + ! grep dirty file3 && > + rm -rf $dotest && > + git reset --hard && > + git checkout feature-branch > + ' > + > + test_expect_success "rebase$type: --continue" ' > + test_config rebase.autostash true && > + git reset --hard && > + git checkout -b rebased-feature-branch feature-branch && > + test_when_finished git branch -D rebased-feature-branch && > + echo dirty >>file3 && > + test_must_fail git rebase$type related-onto-branch && > + test_path_is_file $dotest/autostash && > + ! grep dirty file3 && > + echo "conflicting-plus-goodbye" >file2 && > + git add file2 && > + git rebase --continue && > + test_path_is_missing $dotest/autostash && > + grep dirty file3 && > + git checkout feature-branch > + ' > + > + test_expect_success "rebase$type: --skip" ' > + test_config rebase.autostash true && > + git reset --hard && > + git checkout -b rebased-feature-branch feature-branch && > + test_when_finished git branch -D rebased-feature-branch && > + echo dirty >>file3 && > + test_must_fail git rebase$type related-onto-branch && > + test_path_is_file $dotest/autostash && > + ! grep dirty file3 && > + git rebase --skip && > + test_path_is_missing $dotest/autostash && > + grep dirty file3 && > + git checkout feature-branch > + ' > + > + test_expect_success "rebase$type: --abort" ' > + test_config rebase.autostash true && > + git reset --hard && > + git checkout -b rebased-feature-branch feature-branch && > + test_when_finished git branch -D rebased-feature-branch && > + echo dirty >>file3 && > + test_must_fail git rebase$type related-onto-branch && > + test_path_is_file $dotest/autostash && > + ! grep dirty file3 && > + git rebase --abort && > + test_path_is_missing $dotest/autostash && > + grep dirty file3 && > + git checkout feature-branch > + ' > + > + test_expect_success "rebase$type: non-conflicting rebase, conflicting stash" ' > + test_config rebase.autostash true && > + git reset --hard && > + git checkout -b rebased-feature-branch feature-branch && > + test_when_finished git branch -D rebased-feature-branch && > + echo dirty >file4 && > + git add file4 && > + git rebase$type unrelated-onto-branch && > + test_path_is_missing $dotest && > + git reset --hard && > + grep unrelated file4 && > + ! grep dirty file4 && > + git checkout feature-branch && > + git stash pop && > + grep dirty file4 > + ' > +} > + > +testrebase "" .git/rebase-apply > +testrebase " --merge" .git/rebase-merge > +testrebase " --interactive" .git/rebase-merge > + > +test_done -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html