Merge branch 'tr/gcov'
* tr/gcov: Test git-patch-id Test rev-list --parents/--children Test log --decorate Test fsck a bit harder Test log --graph Test diff --dirstat functionality Test that diff can read from stdin Support coverage testing with GCC/gcov
This commit is contained in:
commit
e785dadc90
24
Makefile
24
Makefile
@ -1640,3 +1640,27 @@ check-docs::
|
|||||||
check-builtins::
|
check-builtins::
|
||||||
./check-builtins.sh
|
./check-builtins.sh
|
||||||
|
|
||||||
|
### Test suite coverage testing
|
||||||
|
#
|
||||||
|
.PHONY: coverage coverage-clean coverage-build coverage-report
|
||||||
|
|
||||||
|
coverage:
|
||||||
|
$(MAKE) coverage-build
|
||||||
|
$(MAKE) coverage-report
|
||||||
|
|
||||||
|
coverage-clean:
|
||||||
|
rm -f *.gcda *.gcno
|
||||||
|
|
||||||
|
COVERAGE_CFLAGS = $(CFLAGS) -O0 -ftest-coverage -fprofile-arcs
|
||||||
|
COVERAGE_LDFLAGS = $(CFLAGS) -O0 -lgcov
|
||||||
|
|
||||||
|
coverage-build: coverage-clean
|
||||||
|
$(MAKE) CFLAGS="$(COVERAGE_CFLAGS)" LDFLAGS="$(COVERAGE_LDFLAGS)" all
|
||||||
|
$(MAKE) CFLAGS="$(COVERAGE_CFLAGS)" LDFLAGS="$(COVERAGE_LDFLAGS)" \
|
||||||
|
-j1 test
|
||||||
|
|
||||||
|
coverage-report:
|
||||||
|
gcov -b *.c
|
||||||
|
grep '^function.*called 0 ' *.c.gcov \
|
||||||
|
| sed -e 's/\([^:]*\)\.gcov: *function \([^ ]*\) called.*/\1: \2/' \
|
||||||
|
| tee coverage-untested-functions
|
||||||
|
@ -28,4 +28,71 @@ test_expect_success 'loose objects borrowed from alternate are not missing' '
|
|||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
# Corruption tests follow. Make sure to remove all traces of the
|
||||||
|
# specific corruption you test afterwards, lest a later test trip over
|
||||||
|
# it.
|
||||||
|
|
||||||
|
test_expect_success 'object with bad sha1' '
|
||||||
|
sha=$(echo blob | git hash-object -w --stdin) &&
|
||||||
|
echo $sha &&
|
||||||
|
old=$(echo $sha | sed "s+^..+&/+") &&
|
||||||
|
new=$(dirname $old)/ffffffffffffffffffffffffffffffffffffff &&
|
||||||
|
sha="$(dirname $new)$(basename $new)"
|
||||||
|
mv .git/objects/$old .git/objects/$new &&
|
||||||
|
git update-index --add --cacheinfo 100644 $sha foo &&
|
||||||
|
tree=$(git write-tree) &&
|
||||||
|
cmt=$(echo bogus | git commit-tree $tree) &&
|
||||||
|
git update-ref refs/heads/bogus $cmt &&
|
||||||
|
(git fsck 2>out; true) &&
|
||||||
|
grep "$sha.*corrupt" out &&
|
||||||
|
rm -f .git/objects/$new &&
|
||||||
|
git update-ref -d refs/heads/bogus &&
|
||||||
|
git read-tree -u --reset HEAD
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'branch pointing to non-commit' '
|
||||||
|
git rev-parse HEAD^{tree} > .git/refs/heads/invalid &&
|
||||||
|
git fsck 2>out &&
|
||||||
|
grep "not a commit" out &&
|
||||||
|
git update-ref -d refs/heads/invalid
|
||||||
|
'
|
||||||
|
|
||||||
|
cat > invalid-tag <<EOF
|
||||||
|
object ffffffffffffffffffffffffffffffffffffffff
|
||||||
|
type commit
|
||||||
|
tag invalid
|
||||||
|
tagger T A Gger <tagger@example.com> 1234567890 -0000
|
||||||
|
|
||||||
|
This is an invalid tag.
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_failure 'tag pointing to nonexistent' '
|
||||||
|
tag=$(git hash-object -w --stdin < invalid-tag) &&
|
||||||
|
echo $tag > .git/refs/tags/invalid &&
|
||||||
|
git fsck --tags 2>out &&
|
||||||
|
cat out &&
|
||||||
|
grep "could not load tagged object" out &&
|
||||||
|
rm .git/refs/tags/invalid
|
||||||
|
'
|
||||||
|
|
||||||
|
cat > wrong-tag <<EOF
|
||||||
|
object $(echo blob | git hash-object -w --stdin)
|
||||||
|
type commit
|
||||||
|
tag wrong
|
||||||
|
tagger T A Gger <tagger@example.com> 1234567890 -0000
|
||||||
|
|
||||||
|
This is an invalid tag.
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_failure 'tag pointing to something else than its type' '
|
||||||
|
tag=$(git hash-object -w --stdin < wrong-tag) &&
|
||||||
|
echo $tag > .git/refs/tags/wrong &&
|
||||||
|
git fsck --tags 2>out &&
|
||||||
|
cat out &&
|
||||||
|
grep "some sane error message" out &&
|
||||||
|
rm .git/refs/tags/wrong
|
||||||
|
'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
@ -258,4 +258,12 @@ test_expect_success \
|
|||||||
git diff-tree -r -R $tree_A $tree_B >.test-b &&
|
git diff-tree -r -R $tree_A $tree_B >.test-b &&
|
||||||
cmp -s .test-a .test-b'
|
cmp -s .test-a .test-b'
|
||||||
|
|
||||||
|
test_expect_success \
|
||||||
|
'diff can read from stdin' \
|
||||||
|
'test_must_fail git diff --no-index -- MN - < NN |
|
||||||
|
grep -v "^index" | sed "s#/-#/NN#" >.test-a &&
|
||||||
|
test_must_fail git diff --no-index -- MN NN |
|
||||||
|
grep -v "^index" >.test-b &&
|
||||||
|
test_cmp .test-a .test-b'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
@ -207,6 +207,10 @@ log --root -c --patch-with-stat --summary master
|
|||||||
log --root --cc --patch-with-stat --summary master
|
log --root --cc --patch-with-stat --summary master
|
||||||
log -SF master
|
log -SF master
|
||||||
log -SF -p master
|
log -SF -p master
|
||||||
|
log --decorate --all
|
||||||
|
|
||||||
|
rev-list --parents HEAD
|
||||||
|
rev-list --children HEAD
|
||||||
|
|
||||||
whatchanged master
|
whatchanged master
|
||||||
whatchanged -p master
|
whatchanged -p master
|
||||||
@ -268,6 +272,7 @@ diff --no-index --name-status dir2 dir
|
|||||||
diff --no-index --name-status -- dir2 dir
|
diff --no-index --name-status -- dir2 dir
|
||||||
diff --no-index dir dir3
|
diff --no-index dir dir3
|
||||||
diff master master^ side
|
diff master master^ side
|
||||||
|
diff --dirstat master~1 master~2
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
3
t/t4013/diff.diff_--dirstat_master~1_master~2
Normal file
3
t/t4013/diff.diff_--dirstat_master~1_master~2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
$ git diff --dirstat master~1 master~2
|
||||||
|
40.0% dir/
|
||||||
|
$
|
34
t/t4013/diff.log_--decorate_--all
Normal file
34
t/t4013/diff.log_--decorate_--all
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
$ git log --decorate --all
|
||||||
|
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64 (refs/heads/master)
|
||||||
|
Merge: 9a6d494 c7a2ab9
|
||||||
|
Author: A U Thor <author@example.com>
|
||||||
|
Date: Mon Jun 26 00:04:00 2006 +0000
|
||||||
|
|
||||||
|
Merge branch 'side'
|
||||||
|
|
||||||
|
commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a (refs/heads/side)
|
||||||
|
Author: A U Thor <author@example.com>
|
||||||
|
Date: Mon Jun 26 00:03:00 2006 +0000
|
||||||
|
|
||||||
|
Side
|
||||||
|
|
||||||
|
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
|
||||||
|
Author: A U Thor <author@example.com>
|
||||||
|
Date: Mon Jun 26 00:02:00 2006 +0000
|
||||||
|
|
||||||
|
Third
|
||||||
|
|
||||||
|
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
|
||||||
|
Author: A U Thor <author@example.com>
|
||||||
|
Date: Mon Jun 26 00:01:00 2006 +0000
|
||||||
|
|
||||||
|
Second
|
||||||
|
|
||||||
|
This is the second commit.
|
||||||
|
|
||||||
|
commit 444ac553ac7612cc88969031b02b3767fb8a353a (refs/heads/initial)
|
||||||
|
Author: A U Thor <author@example.com>
|
||||||
|
Date: Mon Jun 26 00:00:00 2006 +0000
|
||||||
|
|
||||||
|
Initial
|
||||||
|
$
|
7
t/t4013/diff.rev-list_--children_HEAD
Normal file
7
t/t4013/diff.rev-list_--children_HEAD
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
$ git rev-list --children HEAD
|
||||||
|
59d314ad6f356dd08601a4cd5e530381da3e3c64
|
||||||
|
c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a 59d314ad6f356dd08601a4cd5e530381da3e3c64
|
||||||
|
9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0 59d314ad6f356dd08601a4cd5e530381da3e3c64
|
||||||
|
1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
|
||||||
|
444ac553ac7612cc88969031b02b3767fb8a353a 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a
|
||||||
|
$
|
7
t/t4013/diff.rev-list_--parents_HEAD
Normal file
7
t/t4013/diff.rev-list_--parents_HEAD
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
$ git rev-list --parents HEAD
|
||||||
|
59d314ad6f356dd08601a4cd5e530381da3e3c64 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0 c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a
|
||||||
|
c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a 444ac553ac7612cc88969031b02b3767fb8a353a
|
||||||
|
9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
|
||||||
|
1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 444ac553ac7612cc88969031b02b3767fb8a353a
|
||||||
|
444ac553ac7612cc88969031b02b3767fb8a353a
|
||||||
|
$
|
148
t/t4202-log.sh
148
t/t4202-log.sh
@ -174,5 +174,153 @@ test_expect_success 'log --grep -i' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
cat > expect <<EOF
|
||||||
|
* Second
|
||||||
|
* sixth
|
||||||
|
* fifth
|
||||||
|
* fourth
|
||||||
|
* third
|
||||||
|
* second
|
||||||
|
* initial
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success 'simple log --graph' '
|
||||||
|
git log --graph --pretty=tformat:%s >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'set up merge history' '
|
||||||
|
git checkout -b side HEAD~4 &&
|
||||||
|
test_commit side-1 1 1 &&
|
||||||
|
test_commit side-2 2 2 &&
|
||||||
|
git checkout master &&
|
||||||
|
git merge side
|
||||||
|
'
|
||||||
|
|
||||||
|
cat > expect <<\EOF
|
||||||
|
* Merge branch 'side'
|
||||||
|
|\
|
||||||
|
| * side-2
|
||||||
|
| * side-1
|
||||||
|
* | Second
|
||||||
|
* | sixth
|
||||||
|
* | fifth
|
||||||
|
* | fourth
|
||||||
|
|/
|
||||||
|
* third
|
||||||
|
* second
|
||||||
|
* initial
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success 'log --graph with merge' '
|
||||||
|
git log --graph --date-order --pretty=tformat:%s |
|
||||||
|
sed "s/ *$//" >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
|
cat > expect <<\EOF
|
||||||
|
* commit master
|
||||||
|
|\ Merge: A B
|
||||||
|
| | Author: A U Thor <author@example.com>
|
||||||
|
| |
|
||||||
|
| | Merge branch 'side'
|
||||||
|
| |
|
||||||
|
| * commit side
|
||||||
|
| | Author: A U Thor <author@example.com>
|
||||||
|
| |
|
||||||
|
| | side-2
|
||||||
|
| |
|
||||||
|
| * commit tags/side-1
|
||||||
|
| | Author: A U Thor <author@example.com>
|
||||||
|
| |
|
||||||
|
| | side-1
|
||||||
|
| |
|
||||||
|
* | commit master~1
|
||||||
|
| | Author: A U Thor <author@example.com>
|
||||||
|
| |
|
||||||
|
| | Second
|
||||||
|
| |
|
||||||
|
* | commit master~2
|
||||||
|
| | Author: A U Thor <author@example.com>
|
||||||
|
| |
|
||||||
|
| | sixth
|
||||||
|
| |
|
||||||
|
* | commit master~3
|
||||||
|
| | Author: A U Thor <author@example.com>
|
||||||
|
| |
|
||||||
|
| | fifth
|
||||||
|
| |
|
||||||
|
* | commit master~4
|
||||||
|
|/ Author: A U Thor <author@example.com>
|
||||||
|
|
|
||||||
|
| fourth
|
||||||
|
|
|
||||||
|
* commit tags/side-1~1
|
||||||
|
| Author: A U Thor <author@example.com>
|
||||||
|
|
|
||||||
|
| third
|
||||||
|
|
|
||||||
|
* commit tags/side-1~2
|
||||||
|
| Author: A U Thor <author@example.com>
|
||||||
|
|
|
||||||
|
| second
|
||||||
|
|
|
||||||
|
* commit tags/side-1~3
|
||||||
|
Author: A U Thor <author@example.com>
|
||||||
|
|
||||||
|
initial
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success 'log --graph with full output' '
|
||||||
|
git log --graph --date-order --pretty=short |
|
||||||
|
git name-rev --name-only --stdin |
|
||||||
|
sed "s/Merge:.*/Merge: A B/;s/ *$//" >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'set up more tangled history' '
|
||||||
|
git checkout -b tangle HEAD~6 &&
|
||||||
|
test_commit tangle-a tangle-a a &&
|
||||||
|
git merge master~3 &&
|
||||||
|
git merge side~1 &&
|
||||||
|
git checkout master &&
|
||||||
|
git merge tangle
|
||||||
|
'
|
||||||
|
|
||||||
|
cat > expect <<\EOF
|
||||||
|
* Merge branch 'tangle'
|
||||||
|
|\
|
||||||
|
| * Merge branch 'side' (early part) into tangle
|
||||||
|
| |\
|
||||||
|
| * \ Merge branch 'master' (early part) into tangle
|
||||||
|
| |\ \
|
||||||
|
| * | | tangle-a
|
||||||
|
* | | | Merge branch 'side'
|
||||||
|
|\ \ \ \
|
||||||
|
| * | | | side-2
|
||||||
|
| | | |/
|
||||||
|
| | |/|
|
||||||
|
| |/| |
|
||||||
|
| * | | side-1
|
||||||
|
* | | | Second
|
||||||
|
* | | | sixth
|
||||||
|
| | |/
|
||||||
|
| |/|
|
||||||
|
|/| |
|
||||||
|
* | | fifth
|
||||||
|
* | | fourth
|
||||||
|
|/ /
|
||||||
|
* | third
|
||||||
|
|/
|
||||||
|
* second
|
||||||
|
* initial
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success 'log --graph with merge' '
|
||||||
|
git log --graph --date-order --pretty=tformat:%s |
|
||||||
|
sed "s/ *$//" >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
||||||
|
38
t/t4203-patch-id.sh
Executable file
38
t/t4203-patch-id.sh
Executable file
@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='git patch-id'
|
||||||
|
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
test_expect_success 'setup' '
|
||||||
|
test_commit initial foo a &&
|
||||||
|
test_commit first foo b &&
|
||||||
|
git checkout -b same HEAD^ &&
|
||||||
|
test_commit same-msg foo b &&
|
||||||
|
git checkout -b notsame HEAD^ &&
|
||||||
|
test_commit notsame-msg foo c
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'patch-id output is well-formed' '
|
||||||
|
git log -p -1 | git patch-id > output &&
|
||||||
|
grep "^[a-f0-9]\{40\} $(git rev-parse HEAD)$" output
|
||||||
|
'
|
||||||
|
|
||||||
|
get_patch_id () {
|
||||||
|
git log -p -1 "$1" | git patch-id |
|
||||||
|
sed "s# .*##" > patch-id_"$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
test_expect_success 'patch-id detects equality' '
|
||||||
|
get_patch_id master &&
|
||||||
|
get_patch_id same &&
|
||||||
|
test_cmp patch-id_master patch-id_same
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'patch-id detects inequality' '
|
||||||
|
get_patch_id master &&
|
||||||
|
get_patch_id notsame &&
|
||||||
|
! test_cmp patch-id_master patch-id_notsame
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
Loading…
Reference in New Issue
Block a user