diff options
Diffstat (limited to 't')
-rwxr-xr-x | t/t0030-stripspace.sh | 88 | ||||
-rwxr-xr-x | t/t1301-shared-repo.sh | 27 | ||||
-rwxr-xr-x | t/t2007-checkout-symlink.sh | 50 | ||||
-rwxr-xr-x | t/t3200-branch.sh | 21 | ||||
-rwxr-xr-x | t/t3600-rm.sh | 34 | ||||
-rwxr-xr-x | t/t6007-rev-list-cherry-pick-file.sh | 43 | ||||
-rwxr-xr-x | t/t7004-tag.sh | 202 |
7 files changed, 430 insertions, 35 deletions
diff --git a/t/t0030-stripspace.sh b/t/t0030-stripspace.sh index fdc9fdce6f..b1c900379b 100755 --- a/t/t0030-stripspace.sh +++ b/t/t0030-stripspace.sh @@ -81,43 +81,64 @@ test_expect_success \ printf "$ttt\n\n$ttt$ttt$ttt\n" > expect && printf "$ttt\n\n\n\n\n$ttt$ttt$ttt\n" | git stripspace >actual && + git diff expect actual && + + printf "$ttt\n\n$ttt\n" > expect && + printf "$ttt\n\t\n \n\n \t\t\n$ttt\n" | git stripspace >actual && + git diff expect actual && + + printf "$ttt$ttt\n\n$ttt\n" > expect && + printf "$ttt$ttt\n\t\n \n\n \t\t\n$ttt\n" | git stripspace >actual && + git diff expect actual && + + printf "$ttt$ttt$ttt\n\n$ttt\n" > expect && + printf "$ttt$ttt$ttt\n\t\n \n\n \t\t\n$ttt\n" | git stripspace >actual && + git diff expect actual && + + printf "$ttt\n\n$ttt\n" > expect && + printf "$ttt\n\t\n \n\n \t\t\n$ttt\n" | git stripspace >actual && + git diff expect actual && + + printf "$ttt\n\n$ttt$ttt\n" > expect && + printf "$ttt\n\t\n \n\n \t\t\n$ttt$ttt\n" | git stripspace >actual && + git diff expect actual && + + printf "$ttt\n\n$ttt$ttt$ttt\n" > expect && + printf "$ttt\n\t\n \n\n \t\t\n$ttt$ttt$ttt\n" | git stripspace >actual && git diff expect actual ' test_expect_success \ - 'consecutive blank lines at the beginning should be removed' ' - printf "" > expect && + 'only consecutive blank lines should be completely removed' ' + > expect && + printf "\n" | git stripspace >actual && git diff expect actual && - printf "" > expect && printf "\n\n\n" | git stripspace >actual && git diff expect actual && - printf "" > expect && printf "$sss\n$sss\n$sss\n" | git stripspace >actual && git diff expect actual && - printf "" > expect && printf "$sss$sss\n$sss\n\n" | git stripspace >actual && git diff expect actual && - printf "" > expect && printf "\n$sss\n$sss$sss\n" | git stripspace >actual && git diff expect actual && - printf "" > expect && printf "$sss$sss$sss$sss\n\n\n" | git stripspace >actual && git diff expect actual && - printf "" > expect && printf "\n$sss$sss$sss$sss\n\n" | git stripspace >actual && git diff expect actual && - printf "" > expect && printf "\n\n$sss$sss$sss$sss\n" | git stripspace >actual && - git diff expect actual && + git diff expect actual +' +test_expect_success \ + 'consecutive blank lines at the beginning should be removed' ' printf "$ttt\n" > expect && printf "\n$ttt\n" | git stripspace >actual && git diff expect actual && @@ -139,26 +160,22 @@ test_expect_success \ git diff expect actual && printf "$ttt\n" > expect && + printf "$sss\n$sss\n$sss\n$ttt\n" | git stripspace >actual && git diff expect actual && - printf "$ttt\n" > expect && printf "\n$sss\n$sss$sss\n$ttt\n" | git stripspace >actual && git diff expect actual && - printf "$ttt\n" > expect && printf "$sss$sss\n$sss\n\n$ttt\n" | git stripspace >actual && git diff expect actual && - printf "$ttt\n" > expect && printf "$sss$sss$sss\n\n\n$ttt\n" | git stripspace >actual && git diff expect actual && - printf "$ttt\n" > expect && printf "\n$sss$sss$sss\n\n$ttt\n" | git stripspace >actual && git diff expect actual && - printf "$ttt\n" > expect && printf "\n\n$sss$sss$sss\n$ttt\n" | git stripspace >actual && git diff expect actual ' @@ -186,26 +203,22 @@ test_expect_success \ git diff expect actual && printf "$ttt\n" > expect && + printf "$ttt\n$sss\n$sss\n$sss\n" | git stripspace >actual && git diff expect actual && - printf "$ttt\n" > expect && printf "$ttt\n\n$sss\n$sss$sss\n" | git stripspace >actual && git diff expect actual && - printf "$ttt\n" > expect && printf "$ttt\n$sss$sss\n$sss\n\n" | git stripspace >actual && git diff expect actual && - printf "$ttt\n" > expect && printf "$ttt\n$sss$sss$sss\n\n\n" | git stripspace >actual && git diff expect actual && - printf "$ttt\n" > expect && printf "$ttt\n\n$sss$sss$sss\n\n" | git stripspace >actual && git diff expect actual && - printf "$ttt\n" > expect && printf "$ttt\n\n\n$sss$sss$sss\n" | git stripspace >actual && git diff expect actual ' @@ -224,7 +237,7 @@ test_expect_success \ 'text plus spaces without newline at end should end with newline' ' test `printf "$ttt$sss" | git stripspace | wc -l` -gt 0 && test `printf "$ttt$ttt$sss" | git stripspace | wc -l` -gt 0 && - test `printf "$ttt$ttt$ttt$sss" | git stripspace | wc -l` -gt 0 + test `printf "$ttt$ttt$ttt$sss" | git stripspace | wc -l` -gt 0 && test `printf "$ttt$sss$sss" | git stripspace | wc -l` -gt 0 && test `printf "$ttt$ttt$sss$sss" | git stripspace | wc -l` -gt 0 && test `printf "$ttt$sss$sss$sss" | git stripspace | wc -l` -gt 0 @@ -340,16 +353,43 @@ test_expect_success \ printf "" >expect && printf "" | git stripspace >actual && - git diff expect actual + git diff expect actual && printf "$sss$sss" | git stripspace >actual && - git diff expect actual + git diff expect actual && printf "$sss$sss$sss" | git stripspace >actual && - git diff expect actual + git diff expect actual && printf "$sss$sss$sss$sss" | git stripspace >actual && git diff expect actual ' +test_expect_success \ + 'consecutive text lines should be unchanged' ' + printf "$ttt$ttt\n$ttt\n" >expect && + printf "$ttt$ttt\n$ttt\n" | git stripspace >actual && + git diff expect actual && + + printf "$ttt\n$ttt$ttt\n$ttt\n" >expect && + printf "$ttt\n$ttt$ttt\n$ttt\n" | git stripspace >actual && + git diff expect actual && + + printf "$ttt\n$ttt\n$ttt\n$ttt$ttt\n" >expect && + printf "$ttt\n$ttt\n$ttt\n$ttt$ttt\n" | git stripspace >actual && + git diff expect actual && + + printf "$ttt\n$ttt\n\n$ttt$ttt\n$ttt\n" >expect && + printf "$ttt\n$ttt\n\n$ttt$ttt\n$ttt\n" | git stripspace >actual && + git diff expect actual && + + printf "$ttt$ttt\n\n$ttt\n$ttt$ttt\n" >expect && + printf "$ttt$ttt\n\n$ttt\n$ttt$ttt\n" | git stripspace >actual && + git diff expect actual && + + printf "$ttt\n$ttt$ttt\n\n$ttt\n" >expect && + printf "$ttt\n$ttt$ttt\n\n$ttt\n" | git stripspace >actual && + git diff expect actual +' + test_done diff --git a/t/t1301-shared-repo.sh b/t/t1301-shared-repo.sh new file mode 100755 index 0000000000..bb5f30220a --- /dev/null +++ b/t/t1301-shared-repo.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# +# Copyright (c) 2007 Johannes Schindelin +# + +test_description='Test shared repository initialization' + +. ./test-lib.sh + +test_expect_success 'shared=all' ' + mkdir sub && + cd sub && + git init --shared=all && + test 2 = $(git config core.sharedrepository) +' + +test_expect_success 'update-server-info honors core.sharedRepository' ' + : > a1 && + git add a1 && + test_tick && + git commit -m a1 && + umask 0277 && + git update-server-info && + test 444 = $(stat -c %a .git/info/refs) +' + +test_done diff --git a/t/t2007-checkout-symlink.sh b/t/t2007-checkout-symlink.sh new file mode 100755 index 0000000000..0526fce163 --- /dev/null +++ b/t/t2007-checkout-symlink.sh @@ -0,0 +1,50 @@ +#!/bin/sh +# +# Copyright (c) 2007 Junio C Hamano + +test_description='git checkout to switch between branches with symlink<->dir' + +. ./test-lib.sh + +test_expect_success setup ' + + mkdir frotz && + echo hello >frotz/filfre && + git add frotz/filfre && + test_tick && + git commit -m "master has file frotz/filfre" && + + git branch side && + + echo goodbye >nitfol && + git add nitfol + test_tick && + git commit -m "master adds file nitfol" && + + git checkout side && + + git rm --cached frotz/filfre && + mv frotz xyzzy && + ln -s xyzzy frotz && + git add xyzzy/filfre frotz && + test_tick && + git commit -m "side moves frotz/ to xyzzy/ and adds frotz->xyzzy/" + +' + +test_expect_success 'switch from symlink to dir' ' + + git checkout master + +' + +rm -fr frotz xyzzy nitfol && +git checkout -f master || exit + +test_expect_success 'switch from dir to symlink' ' + + git checkout side + +' + +test_done diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh index a19e961cb3..ef1eeb7d8a 100755 --- a/t/t3200-branch.sh +++ b/t/t3200-branch.sh @@ -148,13 +148,14 @@ test_expect_success 'test tracking setup via config' \ test $(git config branch.my3.remote) = local && test $(git config branch.my3.merge) = refs/heads/master' -test_expect_success 'autosetupmerge = all' ' +test_expect_success 'avoid ambiguous track' ' git config branch.autosetupmerge true && + git config remote.ambi1.url = lalala && + git config remote.ambi1.fetch = refs/heads/lalala:refs/heads/master && + git config remote.ambi2.url = lilili && + git config remote.ambi2.fetch = refs/heads/lilili:refs/heads/master && git branch all1 master && - test -z "$(git config branch.all1.merge)" && - git config branch.autosetupmerge all && - git branch all2 master && - test $(git config branch.all2.merge) = refs/heads/master + test -z "$(git config branch.all1.merge)" ' test_expect_success 'test overriding tracking setup via --no-track' \ @@ -167,10 +168,10 @@ test_expect_success 'test overriding tracking setup via --no-track' \ ! test "$(git config branch.my2.remote)" = local && ! test "$(git config branch.my2.merge)" = refs/heads/master' -test_expect_success 'test local tracking setup' \ +test_expect_success 'no tracking without .fetch entries' \ 'git branch --track my6 s && - test $(git config branch.my6.remote) = . && - test $(git config branch.my6.merge) = refs/heads/s' + test -z "$(git config branch.my6.remote)" && + test -z "$(git config branch.my6.merge)"' test_expect_success 'test tracking setup via --track but deeper' \ 'git config remote.local.url . && @@ -182,8 +183,8 @@ test_expect_success 'test tracking setup via --track but deeper' \ test_expect_success 'test deleting branch deletes branch config' \ 'git branch -d my7 && - test "$(git config branch.my7.remote)" = "" && - test "$(git config branch.my7.merge)" = ""' + test -z "$(git config branch.my7.remote)" && + test -z "$(git config branch.my7.merge)"' test_expect_success 'test deleting branch without config' \ 'git branch my7 s && diff --git a/t/t3600-rm.sh b/t/t3600-rm.sh index 13a461f31b..5c001aa489 100755 --- a/t/t3600-rm.sh +++ b/t/t3600-rm.sh @@ -46,6 +46,40 @@ test_expect_success \ 'git rm --cached foo' test_expect_success \ + 'Test that git rm --cached foo succeeds if the index matches the file' \ + 'echo content > foo + git add foo + git rm --cached foo' + +test_expect_success \ + 'Test that git rm --cached foo succeeds if the index matches the file' \ + 'echo content > foo + git add foo + git commit -m foo + echo "other content" > foo + git rm --cached foo' + +test_expect_failure \ + 'Test that git rm --cached foo fails if the index matches neither the file nor HEAD' \ + 'echo content > foo + git add foo + git commit -m foo + echo "other content" > foo + git add foo + echo "yet another content" > foo + git rm --cached foo' + +test_expect_success \ + 'Test that git rm --cached -f foo works in case where --cached only did not' \ + 'echo content > foo + git add foo + git commit -m foo + echo "other content" > foo + git add foo + echo "yet another content" > foo + git rm --cached -f foo' + +test_expect_success \ 'Post-check that foo exists but is not in index after git rm foo' \ '[ -f foo ] && ! git ls-files --error-unmatch foo' diff --git a/t/t6007-rev-list-cherry-pick-file.sh b/t/t6007-rev-list-cherry-pick-file.sh new file mode 100755 index 0000000000..3faeae6c01 --- /dev/null +++ b/t/t6007-rev-list-cherry-pick-file.sh @@ -0,0 +1,43 @@ +#!/bin/sh + +test_description='test git rev-list --cherry-pick -- file' + +. ./test-lib.sh + +# A---B +# \ +# \ +# C +# +# B changes a file foo.c, adding a line of text. C changes foo.c as +# well as bar.c, but the change in foo.c was identical to change B. + +test_expect_success setup ' + echo Hallo > foo && + git add foo && + test_tick && + git commit -m "A" && + git tag A && + git checkout -b branch && + echo Bello > foo && + echo Cello > bar && + git add foo bar && + test_tick && + git commit -m "C" && + git tag C && + git checkout master && + git checkout branch foo && + test_tick && + git commit -m "B" && + git tag B +' + +test_expect_success '--cherry-pick foo comes up empty' ' + test -z "$(git rev-list --left-right --cherry-pick B...C -- foo)" +' + +test_expect_success '--cherry-pick bar does not come up empty' ' + ! test -z "$(git rev-list --left-right --cherry-pick B...C -- bar)" +' + +test_done diff --git a/t/t7004-tag.sh b/t/t7004-tag.sh index b785080f9f..17de2a90e6 100755 --- a/t/t7004-tag.sh +++ b/t/t7004-tag.sh @@ -164,7 +164,7 @@ test_expect_success 'listing all tags should print them ordered' ' git tag a1 && git tag v1.0 && git tag t210 && - git tag -l > actual + git tag -l > actual && git diff expect actual ' @@ -437,6 +437,106 @@ test_expect_success \ git diff expect actual ' +# listing messages for annotated non-signed tags: + +test_expect_success \ + 'listing the one-line message of a non-signed tag should succeed' ' + git-tag -m "A msg" tag-one-line && + + echo "tag-one-line" >expect && + git-tag -l | grep "^tag-one-line" >actual && + git diff expect actual && + git-tag -n 0 -l | grep "^tag-one-line" >actual && + git diff expect actual && + git-tag -n 0 -l tag-one-line >actual && + git diff expect actual && + + echo "tag-one-line A msg" >expect && + git-tag -n xxx -l | grep "^tag-one-line" >actual && + git diff expect actual && + git-tag -n "" -l | grep "^tag-one-line" >actual && + git diff expect actual && + git-tag -n 1 -l | grep "^tag-one-line" >actual && + git diff expect actual && + git-tag -n -l | grep "^tag-one-line" >actual && + git diff expect actual && + git-tag -n 1 -l tag-one-line >actual && + git diff expect actual && + git-tag -n 2 -l tag-one-line >actual && + git diff expect actual && + git-tag -n 999 -l tag-one-line >actual && + git diff expect actual +' + +test_expect_success \ + 'listing the zero-lines message of a non-signed tag should succeed' ' + git-tag -m "" tag-zero-lines && + + echo "tag-zero-lines" >expect && + git-tag -l | grep "^tag-zero-lines" >actual && + git diff expect actual && + git-tag -n 0 -l | grep "^tag-zero-lines" >actual && + git diff expect actual && + git-tag -n 0 -l tag-zero-lines >actual && + git diff expect actual && + + echo "tag-zero-lines " >expect && + git-tag -n 1 -l | grep "^tag-zero-lines" >actual && + git diff expect actual && + git-tag -n -l | grep "^tag-zero-lines" >actual && + git diff expect actual && + git-tag -n 1 -l tag-zero-lines >actual && + git diff expect actual && + git-tag -n 2 -l tag-zero-lines >actual && + git diff expect actual && + git-tag -n 999 -l tag-zero-lines >actual && + git diff expect actual +' + +echo 'tag line one' >annotagmsg +echo 'tag line two' >>annotagmsg +echo 'tag line three' >>annotagmsg +test_expect_success \ + 'listing many message lines of a non-signed tag should succeed' ' + git-tag -F annotagmsg tag-lines && + + echo "tag-lines" >expect && + git-tag -l | grep "^tag-lines" >actual && + git diff expect actual && + git-tag -n 0 -l | grep "^tag-lines" >actual && + git diff expect actual && + git-tag -n 0 -l tag-lines >actual && + git diff expect actual && + + echo "tag-lines tag line one" >expect && + git-tag -n 1 -l | grep "^tag-lines" >actual && + git diff expect actual && + git-tag -n -l | grep "^tag-lines" >actual && + git diff expect actual && + git-tag -n 1 -l tag-lines >actual && + git diff expect actual && + + echo " tag line two" >>expect && + git-tag -n 2 -l | grep "^ *tag.line" >actual && + git diff expect actual && + git-tag -n 2 -l tag-lines >actual && + git diff expect actual && + + echo " tag line three" >>expect && + git-tag -n 3 -l | grep "^ *tag.line" >actual && + git diff expect actual && + git-tag -n 3 -l tag-lines >actual && + git diff expect actual && + git-tag -n 4 -l | grep "^ *tag.line" >actual && + git diff expect actual && + git-tag -n 4 -l tag-lines >actual && + git diff expect actual && + git-tag -n 99 -l | grep "^ *tag.line" >actual && + git diff expect actual && + git-tag -n 99 -l tag-lines >actual && + git diff expect actual +' + # trying to verify annotated non-signed tags: test_expect_success \ @@ -651,6 +751,106 @@ test_expect_success \ git-tag -v commentnonlfile-signed-tag ' +# listing messages for signed tags: + +test_expect_success \ + 'listing the one-line message of a signed tag should succeed' ' + git-tag -s -m "A message line signed" stag-one-line && + + echo "stag-one-line" >expect && + git-tag -l | grep "^stag-one-line" >actual && + git diff expect actual && + git-tag -n 0 -l | grep "^stag-one-line" >actual && + git diff expect actual && + git-tag -n 0 -l stag-one-line >actual && + git diff expect actual && + + echo "stag-one-line A message line signed" >expect && + git-tag -n xxx -l | grep "^stag-one-line" >actual && + git diff expect actual && + git-tag -n "" -l | grep "^stag-one-line" >actual && + git diff expect actual && + git-tag -n 1 -l | grep "^stag-one-line" >actual && + git diff expect actual && + git-tag -n -l | grep "^stag-one-line" >actual && + git diff expect actual && + git-tag -n 1 -l stag-one-line >actual && + git diff expect actual && + git-tag -n 2 -l stag-one-line >actual && + git diff expect actual && + git-tag -n 999 -l stag-one-line >actual && + git diff expect actual +' + +test_expect_success \ + 'listing the zero-lines message of a signed tag should succeed' ' + git-tag -s -m "" stag-zero-lines && + + echo "stag-zero-lines" >expect && + git-tag -l | grep "^stag-zero-lines" >actual && + git diff expect actual && + git-tag -n 0 -l | grep "^stag-zero-lines" >actual && + git diff expect actual && + git-tag -n 0 -l stag-zero-lines >actual && + git diff expect actual && + + echo "stag-zero-lines " >expect && + git-tag -n 1 -l | grep "^stag-zero-lines" >actual && + git diff expect actual && + git-tag -n -l | grep "^stag-zero-lines" >actual && + git diff expect actual && + git-tag -n 1 -l stag-zero-lines >actual && + git diff expect actual && + git-tag -n 2 -l stag-zero-lines >actual && + git diff expect actual && + git-tag -n 999 -l stag-zero-lines >actual && + git diff expect actual +' + +echo 'stag line one' >sigtagmsg +echo 'stag line two' >>sigtagmsg +echo 'stag line three' >>sigtagmsg +test_expect_success \ + 'listing many message lines of a signed tag should succeed' ' + git-tag -s -F sigtagmsg stag-lines && + + echo "stag-lines" >expect && + git-tag -l | grep "^stag-lines" >actual && + git diff expect actual && + git-tag -n 0 -l | grep "^stag-lines" >actual && + git diff expect actual && + git-tag -n 0 -l stag-lines >actual && + git diff expect actual && + + echo "stag-lines stag line one" >expect && + git-tag -n 1 -l | grep "^stag-lines" >actual && + git diff expect actual && + git-tag -n -l | grep "^stag-lines" >actual && + git diff expect actual && + git-tag -n 1 -l stag-lines >actual && + git diff expect actual && + + echo " stag line two" >>expect && + git-tag -n 2 -l | grep "^ *stag.line" >actual && + git diff expect actual && + git-tag -n 2 -l stag-lines >actual && + git diff expect actual && + + echo " stag line three" >>expect && + git-tag -n 3 -l | grep "^ *stag.line" >actual && + git diff expect actual && + git-tag -n 3 -l stag-lines >actual && + git diff expect actual && + git-tag -n 4 -l | grep "^ *stag.line" >actual && + git diff expect actual && + git-tag -n 4 -l stag-lines >actual && + git diff expect actual && + git-tag -n 99 -l | grep "^ *stag.line" >actual && + git diff expect actual && + git-tag -n 99 -l stag-lines >actual && + git diff expect actual +' + # tags pointing to objects different from commits: tree=$(git rev-parse HEAD^{tree}) |