Code

Merge branch 'tr/maint-bundle-boundary' into maint-1.7.8
[git.git] / t / t7501-commit.sh
index e2ef53228ecc6162afdcce78109d426e154b7caa..3ad04363b5920497617f806a18a3a5a0083ac1b9 100755 (executable)
@@ -14,8 +14,12 @@ test_tick
 test_expect_success \
        "initial status" \
        "echo 'bongo bongo' >file &&
-        git add file && \
-        git status | grep 'Initial commit'"
+        git add file"
+
+test_expect_success "Constructing initial commit" '
+       git status >actual &&
+       test_i18ngrep "Initial commit" actual
+'
 
 test_expect_success \
        "fail initial amend" \
@@ -38,10 +42,13 @@ test_expect_success \
        "echo King of the bongo >file &&
        test_must_fail git commit -m foo -a file"
 
-test_expect_success PERL \
-       "using paths with --interactive" \
-       "echo bong-o-bong >file &&
-       ! (echo 7 | git commit -m foo --interactive file)"
+test_expect_success PERL 'can use paths with --interactive' '
+       echo bong-o-bong >file &&
+       # 2: update, 1:st path, that is all, 7: quit
+       ( echo 2; echo 1; echo; echo 7 ) |
+       git commit -m foo --interactive file &&
+       git reset --hard HEAD^
+'
 
 test_expect_success \
        "using invalid commit with -C" \
@@ -86,7 +93,7 @@ chmod 755 editor
 
 test_expect_success \
        "amend commit" \
-       "VISUAL=./editor git commit --amend"
+       "EDITOR=./editor git commit --amend"
 
 test_expect_success \
        "passing -m and -F" \
@@ -107,7 +114,7 @@ chmod 755 editor
 test_expect_success \
        "editing message from other commit" \
        "echo 'hula hula' >file && \
-        VISUAL=./editor git commit -c HEAD^ -a"
+        EDITOR=./editor git commit -c HEAD^ -a"
 
 test_expect_success \
        "message from stdin" \
@@ -117,12 +124,26 @@ test_expect_success \
 test_expect_success \
        "overriding author from command line" \
        "echo 'gak' >file && \
-        git commit -m 'author' --author 'Rubber Duck <rduck@convoy.org>' -a"
+        git commit -m 'author' --author 'Rubber Duck <rduck@convoy.org>' -a >output 2>&1"
+
+test_expect_success \
+       "commit --author output mentions author" \
+       "grep Rubber.Duck output"
 
 test_expect_success PERL \
        "interactive add" \
        "echo 7 | git commit --interactive | grep 'What now'"
 
+test_expect_success PERL \
+       "commit --interactive doesn't change index if editor aborts" \
+       "echo zoo >file &&
+       test_must_fail git diff --exit-code >diff1 &&
+       (echo u ; echo '*' ; echo q) |
+       (EDITOR=: && export EDITOR &&
+        test_must_fail git commit --interactive) &&
+       git diff >diff2 &&
+       test_cmp diff1 diff2"
+
 test_expect_success \
        "showing committed revisions" \
        "git rev-list HEAD >current"
@@ -141,10 +162,10 @@ EOF
 test_expect_success \
        'editor not invoked if -F is given' '
         echo "moo" >file &&
-        VISUAL=./editor git commit -a -F msg &&
+        EDITOR=./editor git commit -a -F msg &&
         git show -s --pretty=format:"%s" | grep -q good &&
         echo "quack" >file &&
-        echo "Another good message." | VISUAL=./editor git commit -a -F - &&
+        echo "Another good message." | EDITOR=./editor git commit -a -F - &&
         git show -s --pretty=format:"%s" | grep -q good
         '
 # We could just check the head sha1, but checking each commit makes it
@@ -211,6 +232,25 @@ test_expect_success 'amend commit to fix author' '
 
 '
 
+test_expect_success 'amend commit to fix date' '
+
+       test_tick &&
+       newtick=$GIT_AUTHOR_DATE &&
+       git reset --hard &&
+       git cat-file -p HEAD |
+       sed -e "s/author.*/author $author $newtick/" \
+               -e "s/^\(committer.*> \).*$/\1$GIT_COMMITTER_DATE/" > \
+               expected &&
+       git commit --amend --date="$newtick" &&
+       git cat-file -p HEAD > current &&
+       test_cmp expected current
+
+'
+
+test_expect_success 'commit complains about bogus date' '
+       test_must_fail git commit --amend --date=10.11.2010
+'
+
 test_expect_success 'sign off (1)' '
 
        echo 1 >positive &&
@@ -247,6 +287,47 @@ $existing" &&
 
 '
 
+test_expect_success 'signoff gap' '
+
+       echo 3 >positive &&
+       git add positive &&
+       alt="Alt-RFC-822-Header: Value" &&
+       git commit -s -m "welcome
+
+$alt" &&
+       git cat-file commit HEAD | sed -e "1,/^\$/d" > actual &&
+       (
+               echo welcome
+               echo
+               echo $alt
+               git var GIT_COMMITTER_IDENT |
+               sed -e "s/>.*/>/" -e "s/^/Signed-off-by: /"
+       ) >expected &&
+       test_cmp expected actual
+'
+
+test_expect_success 'signoff gap 2' '
+
+       echo 4 >positive &&
+       git add positive &&
+       alt="fixed: 34" &&
+       git commit -s -m "welcome
+
+We have now
+$alt" &&
+       git cat-file commit HEAD | sed -e "1,/^\$/d" > actual &&
+       (
+               echo welcome
+               echo
+               echo We have now
+               echo $alt
+               echo
+               git var GIT_COMMITTER_IDENT |
+               sed -e "s/>.*/>/" -e "s/^/Signed-off-by: /"
+       ) >expected &&
+       test_cmp expected actual
+'
+
 test_expect_success 'multiple -m' '
 
        >negative &&
@@ -365,4 +446,16 @@ test_expect_success 'amend using the message from a commit named with tag' '
 
 '
 
+test_expect_success 'amend can copy notes' '
+
+       git config notes.rewrite.amend true &&
+       git config notes.rewriteRef "refs/notes/*" &&
+       test_commit foo &&
+       git notes add -m"a note" &&
+       test_tick &&
+       git commit --amend -m"new foo" &&
+       test "$(git notes show)" = "a note"
+
+'
+
 test_done