Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx> --- t/t3420-rebase-autostash.sh | 105 ++++++++++++++++++++++---------------------- 1 file changed, 52 insertions(+), 53 deletions(-) diff --git a/t/t3420-rebase-autostash.sh b/t/t3420-rebase-autostash.sh index 90eb264..c179262 100755 --- a/t/t3420-rebase-autostash.sh +++ b/t/t3420-rebase-autostash.sh @@ -33,54 +33,56 @@ test_expect_success setup ' git commit -m "related commit" ' +setup_tmp () { + git clone . tmp && + cd tmp && + git fetch -u origin "refs/heads/*:refs/heads/*" && + test_config rebase.autostash true && + git checkout -b rebased-feature-branch feature-branch +} + 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 && + test_when_finished "rm -rf tmp" && + ( + setup_tmp && echo dirty >>file3 && git rebase$type unrelated-onto-branch && grep unrelated file4 && - grep dirty file3 && - git checkout feature-branch + grep dirty file3 + ) ' 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 && + test_when_finished "rm -rf tmp" && + ( + setup_tmp && echo dirty >>file3 && git add file3 && git rebase$type unrelated-onto-branch && grep unrelated file4 && - grep dirty file3 && - git checkout feature-branch + grep dirty file3 + ) ' 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 && + test_when_finished "rm -rf tmp" && + ( + setup_tmp && 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 + ! grep dirty file3 + ) ' 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 && + test_when_finished "rm -rf tmp" && + ( + setup_tmp && echo dirty >>file3 && test_must_fail git rebase$type related-onto-branch && test_path_is_file $dotest/autostash && @@ -89,45 +91,43 @@ testrebase() { git add file2 && git rebase --continue && test_path_is_missing $dotest/autostash && - grep dirty file3 && - git checkout feature-branch + grep dirty file3 + ) ' test_expect_success "rebase$type: --skip" ' - test_config rebase.autostash true && + test_when_finished "rm -rf tmp" && + ( + setup_tmp && 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 + grep dirty file3 + ) ' 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 && + test_when_finished "rm -rf tmp" && + ( + setup_tmp && 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 + grep dirty file3 + ) ' 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 && + test_when_finished "rm -rf tmp" && + ( + setup_tmp && echo dirty >file4 && git add file4 && git rebase$type unrelated-onto-branch && @@ -138,29 +138,28 @@ testrebase() { git checkout feature-branch && git stash pop && grep dirty file4 + ) ' } test_expect_success "rebase: fast-forward rebase" ' - test_config rebase.autostash true && - git reset --hard && - git checkout -b behind-feature-branch feature-branch~1 && - test_when_finished git branch -D behind-feature-branch && + test_when_finished "rm -rf tmp" && + ( + setup_tmp && echo dirty >>file1 && git rebase feature-branch && - grep dirty file1 && - git checkout feature-branch + grep dirty file1 + ) ' test_expect_success "rebase: noop rebase" ' - test_config rebase.autostash true && - git reset --hard && - git checkout -b same-feature-branch feature-branch && - test_when_finished git branch -D same-feature-branch && + test_when_finished "rm -rf tmp" && + ( + setup_tmp && echo dirty >>file1 && git rebase feature-branch && - grep dirty file1 && - git checkout feature-branch + grep dirty file1 + ) ' testrebase "" .git/rebase-apply -- 1.8.4-fc -- 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