Fix git-am --skip
[git.git] / t / t0000-basic.sh
index 22bdaca..ffa723e 100755 (executable)
@@ -17,8 +17,37 @@ IDs.  When object ID computation changes, like in the previous case of
 swapping compression and hashing order, the person who is making the
 modification *should* take notice and update the test vectors here.
 '
+
+################################################################
+# It appears that people are getting bitten by not installing
+# 'merge' (usually part of RCS package in binary distributions)
+# or have too old python without subprocess.  Check them and error
+# out before running any tests.  Also catch the bogosity of trying
+# to run tests without building while we are at it.
+
+../git >/dev/null
+if test $? != 1
+then
+       echo >&2 'You do not seem to have built git yet.'
+       exit 1
+fi
+
+merge >/dev/null 2>/dev/null
+if test $? == 127
+then
+       echo >&2 'You do not seem to have "merge" installed.
+Please check INSTALL document.'
+       exit 1
+fi
+
 . ./test-lib.sh
 
+"$PYTHON" -c 'import subprocess' || {
+       echo >&2 'Your python seem to lack "subprocess" module.
+Please check INSTALL document.'
+       exit 1
+}
+
 ################################################################
 # init-db has been done in an empty repository.
 # make sure it is empty.
@@ -176,4 +205,52 @@ test_expect_success \
     'no diff after checkout and git-update-index --refresh.' \
     'git-diff-files >current && cmp -s current /dev/null'
 
+
+# extended sha1 parsing and ambiguity resolution
+
+GIT_AUTHOR_DATE='1995-01-29T16:00:00 -0800'
+GIT_AUTHOR_EMAIL=a.u.thor@example.com
+GIT_AUTHOR_NAME='A U Thor'
+GIT_COMMITTER_DATE='1995-01-29T16:00:00 -0800'
+GIT_COMMITTER_EMAIL=c.o.mmitter@example.com
+GIT_COMMITTER_NAME='C O Mmitter'
+export GIT_AUTHOR_DATE
+export GIT_AUTHOR_EMAIL
+export GIT_AUTHOR_NAME
+export GIT_COMMITTER_DATE
+export GIT_COMMITTER_EMAIL
+export GIT_COMMITTER_NAME
+
+test_expect_success \
+       'initial commit.' \
+       'commit=$(echo Initial commit | git-commit-tree $tree) &&
+        echo "$commit" >.git/refs/heads/master &&
+        git-ls-tree HEAD &&
+        test "$commit" = 51a092e9ef6cbbe66d258acd17599d3f80be6162'
+
+test_expect_success \
+       'Ambiguous' \
+       'echo "$commit" >.git/refs/heads/nasty &&
+        echo "$commit" >.git/refs/tags/nasty &&
+        if git-rev-parse --verify nasty
+        then
+               echo "should have barfed"
+               false
+        else
+               :
+        fi &&
+        # names directly underneath .git/ should not interfere
+        echo "$commit" >.git/refs/heads/description &&
+        git-rev-parse --verify description &&
+        # broken object name
+        echo fffffffffffffffffffffffffffffffffffffffg \
+               >.git/refs/heads/nasty &&
+        if git-rev-parse --verify nasty
+        then
+               echo "should have barfed"
+               false
+        else
+               :
+        fi'
+
 test_done