X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=t%2Ft0000-basic.sh;h=ffa723ea8bab577fa8443bf9c3b96a01df10434c;hb=69224716f78d6a772318e73060a70ba5ae67e55b;hp=547488bd25a060ba0701f838ffb936a8e9fd91b3;hpb=9d34c29db39bdb5c2443475dd6a24cfc5c2c9e37;p=git.git diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh index 547488bd..ffa723ea 100755 --- a/t/t0000-basic.sh +++ b/t/t0000-basic.sh @@ -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. @@ -28,24 +57,25 @@ test_expect_success \ '.git/objects should be empty after git-init-db in an empty repo.' \ 'cmp -s /dev/null should-be-empty' -# also it should have 257 subdirectories. 258 is counting "objects" +# also it should have 2 subdirectories; no fan-out anymore, pack, and info. +# 3 is counting "objects" itself find .git/objects -type d -print >full-of-directories test_expect_success \ - '.git/objects should have 257 subdirectories.' \ - 'test $(wc -l < full-of-directories) = 258' + '.git/objects should have 3 subdirectories.' \ + 'test $(wc -l < full-of-directories) = 3' ################################################################ # Basics of the basics # updating a new file without --add should fail. test_expect_failure \ - 'git-update-cache without --add should fail adding.' \ - 'git-update-cache should-be-empty' + 'git-update-index without --add should fail adding.' \ + 'git-update-index should-be-empty' # and with --add it should succeed, even if it is empty (it used to fail). test_expect_success \ - 'git-update-cache with --add should succeed.' \ - 'git-update-cache --add should-be-empty' + 'git-update-index with --add should succeed.' \ + 'git-update-index --add should-be-empty' test_expect_success \ 'writing tree out with git-write-tree' \ @@ -59,12 +89,12 @@ test_expect_success \ # Removing paths. rm -f should-be-empty full-of-directories test_expect_failure \ - 'git-update-cache without --remove should fail removing.' \ - 'git-update-cache should-be-empty' + 'git-update-index without --remove should fail removing.' \ + 'git-update-index should-be-empty' test_expect_success \ - 'git-update-cache with --remove should be able to remove.' \ - 'git-update-cache --remove should-be-empty' + 'git-update-index with --remove should be able to remove.' \ + 'git-update-index --remove should-be-empty' # Empty tree can be written with recent write-tree. test_expect_success \ @@ -83,8 +113,8 @@ do ln -s "hello $p" ${p}sym done test_expect_success \ - 'adding various types of objects with git-update-cache --add.' \ - 'find path* ! -type d -print0 | xargs -0 git-update-cache --add' + 'adding various types of objects with git-update-index --add.' \ + 'find path* ! -type d -print | xargs git-update-index --add' # Show them and see that matches what we expect. test_expect_success \ @@ -125,19 +155,18 @@ test_expect_success \ 'git-ls-tree output for a known tree.' \ 'diff current expected' +# This changed in ls-tree pathspec change -- recursive does +# not show tree nodes anymore. test_expect_success \ 'showing tree with git-ls-tree -r' \ 'git-ls-tree -r $tree >current' cat >expected <<\EOF 100644 blob f87290f8eb2cbbea7857214459a0739927eab154 path0 120000 blob 15a98433ae33114b085f3eb3bb03b832b3180a01 path0sym -040000 tree 58a09c23e2ca152193f2786e06986b7b6712bdbe path2 100644 blob 3feff949ed00a62d9f7af97c15cd8a30595e7ac7 path2/file2 120000 blob d8ce161addc5173867a3c3c730924388daedbc38 path2/file2sym -040000 tree 21ae8269cacbe57ae09138dcc3a2887f904d02b3 path3 100644 blob 0aa34cae68d0878578ad119c86ca2b5ed5b28376 path3/file3 120000 blob 8599103969b43aff7e430efea79ca4636466794f path3/file3sym -040000 tree 3c5e5399f3a333eddecce7a9b9465b63f65f51e2 path3/subp3 100644 blob 00fb5908cb97c2564a9783c0c64087333b3b464f path3/subp3/file3 120000 blob 6649a1ebe9e9f1c553b66f5a6e74136a07ccc57c path3/subp3/file3sym EOF @@ -169,11 +198,59 @@ test_expect_success \ 'git-diff-files >current && diff >/dev/null -b current expected' test_expect_success \ - 'git-update-cache --refresh should succeed.' \ - 'git-update-cache --refresh' + 'git-update-index --refresh should succeed.' \ + 'git-update-index --refresh' test_expect_success \ - 'no diff after checkout and git-update-cache --refresh.' \ + '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