t3404 (rebase -i): move comment to description
[gitweb.git] / t / t3404-rebase-interactive.sh
index 67fe76173827fed4e165f52c6a3184162b825f56..4097a2d9c6941d4f6c8d7c39f95a446a07cf2cc4 100755 (executable)
@@ -7,6 +7,23 @@ test_description='git rebase interactive
 
 This test runs git rebase "interactively", by faking an edit, and verifies
 that the result still makes sense.
+
+Initial setup:
+
+     one - two - three - four (conflict-branch)
+   /
+ A - B - C - D - E            (master)
+ | \
+ |   F - G - H                (branch1)
+ |     \
+ |\      I                    (branch2)
+ | \
+ |   J - K - L - M            (no-conflict-branch)
+  \
+    N - O - P                 (no-ff-branch)
+
+ where A, B, D and G all touch file1, and one, two, three, four all
+ touch file "conflict".
 '
 . ./test-lib.sh
 
@@ -14,27 +31,9 @@ that the result still makes sense.
 
 set_fake_editor
 
-# Set up the repository like this:
-#
-#     one - two - three - four (conflict-branch)
-#   /
-# A - B - C - D - E            (master)
-# | \
-# |   F - G - H                (branch1)
-# |     \
-# |\      I                    (branch2)
-# | \
-# |   J - K - L - M            (no-conflict-branch)
-#  \
-#    N - O - P                 (no-ff-branch)
-#
-# where A, B, D and G all touch file1, and one, two, three, four all
-# touch file "conflict".
-#
 # WARNING: Modifications to the initial repository can change the SHA ID used
 # in the expect2 file for the 'stop on conflicting pick' test.
 
-
 test_expect_success 'setup' '
        test_commit A file1 &&
        test_commit B file1 &&
@@ -46,22 +45,21 @@ test_expect_success 'setup' '
        test_commit G file1 &&
        test_commit H file5 &&
        git checkout -b branch2 F &&
-       test_commit I file6
+       test_commit I file6 &&
        git checkout -b conflict-branch A &&
-       for n in one two three four
-       do
-               test_commit $n conflict
-       done &&
+       test_commit one conflict &&
+       test_commit two conflict &&
+       test_commit three conflict &&
+       test_commit four conflict &&
        git checkout -b no-conflict-branch A &&
-       for n in J K L M
-       do
-               test_commit $n file$n
-       done &&
+       test_commit J fileJ &&
+       test_commit K fileK &&
+       test_commit L fileL &&
+       test_commit M fileM &&
        git checkout -b no-ff-branch A &&
-       for n in N O P
-       do
-               test_commit $n file$n
-       done
+       test_commit N fileN &&
+       test_commit O fileO &&
+       test_commit P fileP
 '
 
 # "exec" commands are ran with the user shell by default, but this may
@@ -79,18 +77,18 @@ test_expect_success 'rebase -i with the exec command' '
        export FAKE_LINES &&
        test_must_fail git rebase -i A
        ) &&
-       test -f touch-one &&
-       test -f touch-two &&
-       ! test -f touch-three &&
+       test_path_is_file touch-one &&
+       test_path_is_file touch-two &&
+       test_path_is_missing touch-three " (should have stopped before)" &&
        test $(git rev-parse C) = $(git rev-parse HEAD) || {
                echo "Stopped at wrong revision:"
                echo "($(git describe --tags HEAD) instead of C)"
                false
        } &&
        git rebase --continue &&
-       test -f touch-three &&
-       test -f "touch-file  name with spaces" &&
-       test -f touch-after-semicolon &&
+       test_path_is_file touch-three &&
+       test_path_is_file "touch-file  name with spaces" &&
+       test_path_is_file touch-after-semicolon &&
        test $(git rev-parse master) = $(git rev-parse HEAD) || {
                echo "Stopped at wrong revision:"
                echo "($(git describe --tags HEAD) instead of master)"
@@ -101,11 +99,11 @@ test_expect_success 'rebase -i with the exec command' '
 
 test_expect_success 'rebase -i with the exec command runs from tree root' '
        git checkout master &&
-       mkdir subdir && cd subdir &&
+       mkdir subdir && (cd subdir &&
        FAKE_LINES="1 exec_>touch-subdir" \
-               git rebase -i HEAD^ &&
-       cd .. &&
-       test -f touch-subdir &&
+               git rebase -i HEAD^
+       ) &&
+       test_path_is_file touch-subdir &&
        rm -fr subdir
 '
 
@@ -204,16 +202,17 @@ test_expect_success 'abort' '
        git rebase --abort &&
        test $(git rev-parse new-branch1) = $(git rev-parse HEAD) &&
        test "$(git symbolic-ref -q HEAD)" = "refs/heads/branch1" &&
-       ! test -d .git/rebase-merge
+       test_path_is_missing .git/rebase-merge
 '
 
 test_expect_success 'abort with error when new base cannot be checked out' '
        git rm --cached file1 &&
        git commit -m "remove file in base" &&
        test_must_fail git rebase -i master > output 2>&1 &&
-       grep "Untracked working tree file .file1. would be overwritten" \
+       grep "The following untracked working tree files would be overwritten by checkout:" \
                output &&
-       ! test -d .git/rebase-merge &&
+       grep "file1" output &&
+       test_path_is_missing .git/rebase-merge &&
        git reset --hard HEAD^
 '
 
@@ -583,7 +582,7 @@ test_expect_success 'do "noop" when there is nothing to cherry-pick' '
 
        git checkout -b branch4 HEAD &&
        GIT_EDITOR=: git commit --amend \
-               --author="Somebody else <somebody@else.com>" 
+               --author="Somebody else <somebody@else.com>" &&
        test $(git rev-parse branch3) != $(git rev-parse branch4) &&
        git rebase -i branch3 &&
        test $(git rev-parse branch3) = $(git rev-parse branch4)
@@ -598,7 +597,7 @@ test_expect_success 'submodule rebase setup' '
                git add elif && git commit -m "submodule initial"
        ) &&
        echo 1 >file1 &&
-       git add file1 sub
+       git add file1 sub &&
        test_tick &&
        git commit -m "One" &&
        echo 2 >file1 &&
@@ -698,13 +697,19 @@ test_expect_success 'set up commits with funny messages' '
        git commit -a -m "end with slash\\" &&
        echo >>file1 &&
        test_tick &&
+       git commit -a -m "something (\000) that looks like octal" &&
+       echo >>file1 &&
+       test_tick &&
+       git commit -a -m "something (\n) that looks like a newline" &&
+       echo >>file1 &&
+       test_tick &&
        git commit -a -m "another commit"
 '
 
 test_expect_success 'rebase-i history with funny messages' '
        git rev-list A..funny >expect &&
        test_tick &&
-       FAKE_LINES="1 2" git rebase -i A &&
+       FAKE_LINES="1 2 3 4" git rebase -i A &&
        git rev-list A.. >actual &&
        test_cmp expect actual
 '