checkout: tone down the "forked status" diagnostic messages
[gitweb.git] / t / t7501-commit.sh
index 31a6f63399a97902e493c453a3f3117bc44ef2f7..d1a415a12624f4a116a9001bad48c34420671280 100755 (executable)
@@ -4,7 +4,7 @@
 #
 
 # FIXME: Test the various index usages, -i and -o, test reflog,
-# signoff, hooks
+# signoff
 
 test_description='git-commit'
 . ./test-lib.sh
@@ -244,4 +244,87 @@ test_expect_success 'multiple -m' '
 
 '
 
+author="The Real Author <someguy@his.email.org>"
+test_expect_success 'amend commit to fix author' '
+
+       oldtick=$GIT_AUTHOR_DATE &&
+       test_tick &&
+       git reset --hard &&
+       git cat-file -p HEAD |
+       sed -e "s/author.*/author $author $oldtick/" \
+               -e "s/^\(committer.*> \).*$/\1$GIT_COMMITTER_DATE/" > \
+               expected &&
+       git commit --amend --author="$author" &&
+       git cat-file -p HEAD > current &&
+       diff expected current
+
+'
+
+test_expect_success 'git commit <file> with dirty index' '
+       echo tacocat > elif &&
+       echo tehlulz > chz &&
+       git add chz &&
+       git commit elif -m "tacocat is a palindrome" &&
+       git show --stat | grep elif &&
+       git diff --cached | grep chz
+'
+
+test_expect_success 'same tree (single parent)' '
+
+       git reset --hard
+
+       if git commit -m empty
+       then
+               echo oops -- should have complained
+               false
+       else
+               : happy
+       fi
+
+'
+
+test_expect_success 'same tree (single parent) --allow-empty' '
+
+       git commit --allow-empty -m "forced empty" &&
+       git cat-file commit HEAD | grep forced
+
+'
+
+test_expect_success 'same tree (merge and amend merge)' '
+
+       git checkout -b side HEAD^ &&
+       echo zero >zero &&
+       git add zero &&
+       git commit -m "add zero" &&
+       git checkout master &&
+
+       git merge -s ours side -m "empty ok" &&
+       git diff HEAD^ HEAD >actual &&
+       : >expected &&
+       diff -u expected actual &&
+
+       git commit --amend -m "empty really ok" &&
+       git diff HEAD^ HEAD >actual &&
+       : >expected &&
+       diff -u expected actual
+
+'
+
+test_expect_success 'amend using the message from another commit' '
+
+       git reset --hard &&
+       test_tick &&
+       git commit --allow-empty -m "old commit" &&
+       old=$(git rev-parse --verify HEAD) &&
+       test_tick &&
+       git commit --allow-empty -m "new commit" &&
+       new=$(git rev-parse --verify HEAD) &&
+       test_tick &&
+       git commit --allow-empty --amend -C "$old" &&
+       git show --pretty="format:%ad %s" "$old" >expected &&
+       git show --pretty="format:%ad %s" HEAD >actual &&
+       diff -u expected actual
+
+'
+
 test_done