On Fri, May 10, 2013 at 10:26 AM, Ramkumar Ramachandra
<[email protected]> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html