mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
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.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
|
||||
|
|
|
@ -258,4 +258,12 @@ test_expect_success \
|
|||
git diff-tree -r -R $tree_A $tree_B >.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
|
||||
|
|
|
@ -207,6 +207,10 @@ log --root -c --patch-with-stat --summary master
|
|||
log --root --cc --patch-with-stat --summary master
|
||||
log -SF master
|
||||
log -SF -p master
|
||||
log --decorate --all
|
||||
|
||||
rev-list --parents HEAD
|
||||
rev-list --children HEAD
|
||||
|
||||
whatchanged 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 dir dir3
|
||||
diff master master^ side
|
||||
diff --dirstat master~1 master~2
|
||||
EOF
|
||||
|
||||
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
|
||||
'
|
||||
|
||||
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
|
||||
|
||||
|
|
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 a new issue