diff: reject unknown change class given to --diff-filter
[gitweb.git] / t / t3401-rebase-partial.sh
index d7c874ceb8b9a655ccd605a318aa00449d7fda64..58f482378392c8c358a3129094885f90ead9808c 100755 (executable)
@@ -12,32 +12,17 @@ local branch.
 . ./test-lib.sh
 
 test_expect_success 'prepare repository with topic branch' '
-       echo First > A &&
-       git update-index --add A &&
-       git commit -m "Add A." &&
-
+       test_commit A &&
        git checkout -b my-topic-branch &&
-
-       echo Second > B &&
-       git update-index --add B &&
-       git commit -m "Add B." &&
-
-       echo AnotherSecond > C &&
-       git update-index --add C &&
-       git commit -m "Add C." &&
-
+       test_commit B &&
+       test_commit C &&
        git checkout -f master &&
-
-       echo Third >> A &&
-       git update-index A &&
-       git commit -m "Modify A."
+       test_commit A2 A.t
 '
 
 test_expect_success 'pick top patch from topic branch into master' '
-       git cherry-pick my-topic-branch^0 &&
-       git checkout -f my-topic-branch &&
-       git branch master-merge master &&
-       git branch my-topic-branch-merge my-topic-branch
+       git cherry-pick C &&
+       git checkout -f my-topic-branch
 '
 
 test_debug '
@@ -48,13 +33,37 @@ test_debug '
 
 test_expect_success 'rebase topic branch against new master and check git am did not get halted' '
        git rebase master &&
-       test ! -d .git/rebase-apply
+       test_path_is_missing .git/rebase-apply
 '
 
 test_expect_success 'rebase --merge topic branch that was partially merged upstream' '
-       git checkout -f my-topic-branch-merge &&
-       git rebase --merge master-merge &&
-       test ! -d .git/rebase-merge
+       git reset --hard C &&
+       git rebase --merge master &&
+       test_path_is_missing .git/rebase-merge
+'
+
+test_expect_success 'rebase ignores empty commit' '
+       git reset --hard A &&
+       git commit --allow-empty -m empty &&
+       test_commit D &&
+       git rebase C &&
+       test "$(git log --format=%s C..)" = "D"
+'
+
+test_expect_success 'rebase --keep-empty' '
+       git reset --hard D &&
+       git rebase --keep-empty C &&
+       test "$(git log --format=%s C..)" = "D
+empty"
+'
+
+test_expect_success 'rebase --keep-empty keeps empty even if already in upstream' '
+       git reset --hard A &&
+       git commit --allow-empty -m also-empty &&
+       git rebase --keep-empty D &&
+       test "$(git log --format=%s A..)" = "also-empty
+D
+empty"
 '
 
 test_done