Merge branch 'sg/test-rebase-editor-fix' into maint
authorJunio C Hamano <gitster@pobox.com>
Wed, 21 Nov 2018 13:58:10 +0000 (22:58 +0900)
committerJunio C Hamano <gitster@pobox.com>
Wed, 21 Nov 2018 13:58:10 +0000 (22:58 +0900)
* sg/test-rebase-editor-fix:
t3404-rebase-interactive: test abbreviated commands

1  2 
t/t3404-rebase-interactive.sh
index ff89b6341a6fc19801959058e35039778bc6577b,d36ee4f80756c4922e139c59b815c9a496090636..0075ac5c2a8745513e1e8c496ca6e276158c8d2b
@@@ -114,20 -114,11 +114,20 @@@ test_expect_success 'rebase -i with exe
        git checkout master &&
        mkdir subdir && (cd subdir &&
        set_fake_editor &&
-       FAKE_LINES="1 exec_cd_subdir_&&_git_rev-parse_--is-inside-work-tree" \
+       FAKE_LINES="1 x_cd_subdir_&&_git_rev-parse_--is-inside-work-tree" \
                git rebase -i HEAD^
        )
  '
  
 +test_expect_success 'rebase -i sets work tree properly' '
 +      test_when_finished "rm -rf subdir" &&
 +      test_when_finished "test_might_fail git rebase --abort" &&
 +      mkdir subdir &&
 +      git rebase -x "(cd subdir && git rev-parse --show-toplevel)" HEAD^ \
 +              >actual &&
 +      ! grep "/subdir$" actual
 +'
 +
  test_expect_success 'rebase -i with the exec command checks tree cleanness' '
        git checkout master &&
        set_fake_editor &&
@@@ -273,18 -264,11 +273,18 @@@ test_expect_success 'retain authorship
  '
  
  test_expect_success 'retain authorship w/ conflicts' '
 +      oGIT_AUTHOR_NAME=$GIT_AUTHOR_NAME &&
 +      test_when_finished "GIT_AUTHOR_NAME=\$oGIT_AUTHOR_NAME" &&
 +
        git reset --hard twerp &&
        test_commit a conflict a conflict-a &&
        git reset --hard twerp &&
 -      GIT_AUTHOR_NAME=AttributeMe \
 +
 +      GIT_AUTHOR_NAME=AttributeMe &&
 +      export GIT_AUTHOR_NAME &&
        test_commit b conflict b conflict-b &&
 +      GIT_AUTHOR_NAME=$oGIT_AUTHOR_NAME &&
 +
        set_fake_editor &&
        test_must_fail git rebase -i conflict-a &&
        echo resolved >conflict &&
@@@ -515,7 -499,7 +515,7 @@@ test_expect_success 'squash works as ex
        git checkout -b squash-works no-conflict-branch &&
        one=$(git rev-parse HEAD~3) &&
        set_fake_editor &&
-       FAKE_LINES="1 squash 3 2" EXPECT_HEADER_COUNT=2 \
+       FAKE_LINES="1 s 3 2" EXPECT_HEADER_COUNT=2 \
                git rebase -i HEAD~3 &&
        test $one = $(git rev-parse HEAD~2)
  '
@@@ -525,7 -509,7 +525,7 @@@ test_expect_success 'interrupted squas
        one=$(git rev-parse HEAD~3) &&
        set_fake_editor &&
        test_must_fail env FAKE_LINES="1 squash 3 2" git rebase -i HEAD~3 &&
 -      (echo one; echo two; echo four) > conflict &&
 +      test_write_lines one two four > conflict &&
        git add conflict &&
        test_must_fail git rebase --continue &&
        echo resolved > conflict &&
@@@ -539,10 -523,10 +539,10 @@@ test_expect_success 'interrupted squas
        one=$(git rev-parse HEAD~3) &&
        set_fake_editor &&
        test_must_fail env FAKE_LINES="3 squash 1 2" git rebase -i HEAD~3 &&
 -      (echo one; echo four) > conflict &&
 +      test_write_lines one four > conflict &&
        git add conflict &&
        test_must_fail git rebase --continue &&
 -      (echo one; echo two; echo four) > conflict &&
 +      test_write_lines one two four > conflict &&
        git add conflict &&
        test_must_fail git rebase --continue &&
        echo resolved > conflict &&
@@@ -748,7 -732,7 +748,7 @@@ test_expect_success 'reword' 
        git show HEAD^ | grep "D changed" &&
        FAKE_LINES="reword 1 2 3 4" FAKE_COMMIT_MESSAGE="B changed" git rebase -i A &&
        git show HEAD~3 | grep "B changed" &&
-       FAKE_LINES="1 reword 2 3 4" FAKE_COMMIT_MESSAGE="C changed" git rebase -i A &&
+       FAKE_LINES="1 r 2 pick 3 p 4" FAKE_COMMIT_MESSAGE="C changed" git rebase -i A &&
        git show HEAD~2 | grep "C changed"
  '
  
@@@ -774,7 -758,7 +774,7 @@@ test_expect_success 'rebase -i can cop
        git reset --hard n3 &&
        git notes add -m"an earlier note" n2 &&
        set_fake_editor &&
-       GIT_NOTES_REWRITE_MODE=concatenate FAKE_LINES="1 fixup 2" git rebase -i n1 &&
+       GIT_NOTES_REWRITE_MODE=concatenate FAKE_LINES="1 f 2" git rebase -i n1 &&
        git notes show > output &&
        test_cmp expect output
  '
@@@ -795,15 -779,16 +795,15 @@@ test_expect_success 'always cherry-pic
        git tag original-no-ff-branch &&
        set_fake_editor &&
        git rebase -i --no-ff A &&
 -      touch empty &&
        for p in 0 1 2
        do
                test ! $(git rev-parse HEAD~$p) = $(git rev-parse original-no-ff-branch~$p) &&
                git diff HEAD~$p original-no-ff-branch~$p > out &&
 -              test_cmp empty out
 +              test_must_be_empty out
        done &&
        test $(git rev-parse HEAD~3) = $(git rev-parse original-no-ff-branch~3) &&
        git diff HEAD~3 original-no-ff-branch~3 > out &&
 -      test_cmp empty out
 +      test_must_be_empty out
  '
  
  test_expect_success 'set up commits with funny messages' '
@@@ -996,35 -981,7 +996,35 @@@ test_expect_success 'rebase -i --root r
        test -z "$(git show -s --format=%p HEAD^)"
  '
  
 +test_expect_success 'rebase -i --root when root has untracked file confilct' '
 +      test_when_finished "reset_rebase" &&
 +      git checkout -b failing-root-pick A &&
 +      echo x >file2 &&
 +      git rm file1 &&
 +      git commit -m "remove file 1 add file 2" &&
 +      echo z >file1 &&
 +      set_fake_editor &&
 +      test_must_fail env FAKE_LINES="1 2" git rebase -i --root &&
 +      rm file1 &&
 +      git rebase --continue &&
 +      test "$(git log -1 --format=%B)" = "remove file 1 add file 2" &&
 +      test "$(git rev-list --count HEAD)" = 2
 +'
 +
 +test_expect_success 'rebase -i --root reword root when root has untracked file conflict' '
 +      test_when_finished "reset_rebase" &&
 +      echo z>file1 &&
 +      set_fake_editor &&
 +      test_must_fail env FAKE_LINES="reword 1 2" \
 +              FAKE_COMMIT_MESSAGE="Modified A" git rebase -i --root &&
 +      rm file1 &&
 +      FAKE_COMMIT_MESSAGE="Reworded A" git rebase --continue &&
 +      test "$(git log -1 --format=%B HEAD^)" = "Reworded A" &&
 +      test "$(git rev-list --count HEAD)" = 2
 +'
 +
  test_expect_success C_LOCALE_OUTPUT 'rebase --edit-todo does not work on non-interactive rebase' '
 +      git checkout reword-root-branch &&
        git reset --hard &&
        git checkout conflict-branch &&
        set_fake_editor &&
@@@ -1245,13 -1202,13 +1245,13 @@@ rebase_setup_and_clean () 
                test_might_fail git branch -D $1 &&
                test_might_fail git rebase --abort
        " &&
 -      git checkout -b $1 master
 +      git checkout -b $1 ${2:-master}
  }
  
  test_expect_success 'drop' '
        rebase_setup_and_clean drop-test &&
        set_fake_editor &&
-       FAKE_LINES="1 drop 2 3 drop 4 5" git rebase -i --root &&
+       FAKE_LINES="1 drop 2 3 d 4 5" git rebase -i --root &&
        test E = $(git cat-file commit HEAD | sed -ne \$p) &&
        test C = $(git cat-file commit HEAD^ | sed -ne \$p) &&
        test A = $(git cat-file commit HEAD^^ | sed -ne \$p)
@@@ -1422,24 -1379,4 +1422,24 @@@ test_expect_success 'rebase -i --gpg-si
        test_i18ngrep "$SQ-S\"S I Gner\"$SQ" err
  '
  
 +test_expect_success 'valid author header after --root swap' '
 +      rebase_setup_and_clean author-header no-conflict-branch &&
 +      set_fake_editor &&
 +      git commit --amend --author="Au ${SQ}thor <author@example.com>" --no-edit &&
 +      git cat-file commit HEAD | grep ^author >expected &&
 +      FAKE_LINES="5 1" git rebase -i --root &&
 +      git cat-file commit HEAD^ | grep ^author >actual &&
 +      test_cmp expected actual
 +'
 +
 +test_expect_success 'valid author header when author contains single quote' '
 +      rebase_setup_and_clean author-header no-conflict-branch &&
 +      set_fake_editor &&
 +      git commit --amend --author="Au ${SQ}thor <author@example.com>" --no-edit &&
 +      git cat-file commit HEAD | grep ^author >expected &&
 +      FAKE_LINES="2" git rebase -i HEAD~2 &&
 +      git cat-file commit HEAD | grep ^author >actual &&
 +      test_cmp expected actual
 +'
 +
  test_done