diff options
author | Junio C Hamano <junkio@cox.net> | 2006-03-05 22:07:37 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-03-05 22:09:15 -0800 |
commit | 92a903acfd0904e6dd6d18112428429938783d19 (patch) | |
tree | 5e3e52c51775784c0673caab46e124067ee1875e /t/annotate-tests.sh | |
parent | 5fcab3d7db9bb29f3897a593da69d6ae83a405ef (diff) | |
download | git-92a903acfd0904e6dd6d18112428429938783d19.tar.gz git-92a903acfd0904e6dd6d18112428429938783d19.tar.xz |
annotate/blame tests updates.
This rewrites the result check code a bit. The earlier one
using awk was splitting columns at any whitespace, which
confused lines attributed incorrectly to the merge made by the
default author "A U Thor <author@example.com>" with lines
attributed to author "A".
The latest test by Ryan to add the "starting from older commit"
test is also included, with another older commit test.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 't/annotate-tests.sh')
-rw-r--r-- | t/annotate-tests.sh | 81 |
1 files changed, 44 insertions, 37 deletions
diff --git a/t/annotate-tests.sh b/t/annotate-tests.sh index 54a4dfb9f..d25a7a1e7 100644 --- a/t/annotate-tests.sh +++ b/t/annotate-tests.sh @@ -1,6 +1,37 @@ # This file isn't used as a test script directly, instead it is # sourced from t8001-annotate.sh and t8001-blame.sh. +check_count () { + head= + case "$1" in -h) head="$2"; shift; shift ;; esac + $PROG file $head | perl -e ' + my %expect = (@ARGV); + my %count = (); + while (<STDIN>) { + if (/^[0-9a-f]+\t\(([^\t]+)\t/) { + my $author = $1; + for ($author) { s/^\s*//; s/\s*$//; } + if (exists $expect{$author}) { + $count{$author}++; + } + } + } + my $bad = 0; + while (my ($author, $count) = each %count) { + my $ok; + if ($expect{$author} != $count) { + $bad = 1; + $ok = "bad"; + } + else { + $ok = "good"; + } + print STDERR "Author $author (expected $expect{$author}, attributed $count) $ok\n"; + } + exit($bad); + ' "$@" +} + test_expect_success \ 'prepare reference tree' \ 'echo "1A quick brown fox jumps over the" >file && @@ -10,7 +41,7 @@ test_expect_success \ test_expect_success \ 'check all lines blamed on A' \ - '[ $(git annotate file | awk "{print \$3}" | grep -c "A") == 2 ]' + 'check_count A 2' test_expect_success \ 'Setup new lines blamed on B' \ @@ -19,12 +50,8 @@ test_expect_success \ GIT_AUTHOR_NAME="B" git commit -a -m "Second."' test_expect_success \ - 'Two lines blamed on A' \ - '[ $($PROG file | awk "{print \$3}" | grep -c "A") == 2 ]' - -test_expect_success \ - 'Two lines blamed on B' \ - '[ $($PROG file | awk "{print \$3}" | grep -c "B") == 2 ]' + 'Two lines blamed on A, two on B' \ + 'check_count A 2 B 2' test_expect_success \ 'merge-setup part 1' \ @@ -34,16 +61,8 @@ test_expect_success \ GIT_AUTHOR_NAME="B1" git commit -a -m "Branch1-1"' test_expect_success \ - 'Two lines blamed on A' \ - '[ $($PROG file | awk "{print \$3}" | grep -c "^A$") == 2 ]' - -test_expect_success \ - 'Two lines blamed on B' \ - '[ $($PROG file | awk "{print \$3}" | grep -c "^B$") == 2 ]' - -test_expect_success \ - 'Two lines blamed on B1' \ - '[ $($PROG file | awk "{print \$3}" | grep -c "^B1$") == 2 ]' + 'Two lines blamed on A, two on B, two on B1' \ + 'check_count A 2 B 2 B1 2' test_expect_success \ 'merge-setup part 2' \ @@ -53,34 +72,22 @@ test_expect_success \ GIT_AUTHOR_NAME="B2" git commit -a -m "Branch2-1"' test_expect_success \ - 'Two lines blamed on A' \ - '[ $($PROG file | awk "{print \$3}" | grep -c "^A$") == 2 ]' - -test_expect_success \ - 'One line blamed on B' \ - '[ $($PROG file | awk "{print \$3}" | grep -c "^B$") == 1 ]' - -test_expect_success \ - 'One line blamed on B2' \ - '[ $($PROG file | awk "{print \$3}" | grep -c "^B2$") == 1 ]' - + 'Two lines blamed on A, one on B, one on B2' \ + 'check_count A 2 B 1 B2 1' test_expect_success \ 'merge-setup part 3' \ 'git pull . branch1' test_expect_success \ - 'Two lines blamed on A' \ - '[ $($PROG file | awk "{print \$3}" | grep -c "^A$") == 2 ]' + 'Two lines blamed on A, one on B, two on B1, one on B2' \ + 'check_count A 2 B 1 B1 2 B2 1' test_expect_success \ - 'One line blamed on B' \ - '[ $($PROG file | awk "{print \$3}" | grep -c "^B$") == 1 ]' + 'Annotating an old revision works' \ + 'check_count -h master A 2 B 2' test_expect_success \ - 'Two lines blamed on B1' \ - '[ $($PROG file | awk "{print \$3}" | grep -c "^B1$") == 2 ]' + 'Annotating an old revision works' \ + 'check_count -h master^ A 2' -test_expect_success \ - 'One line blamed on B2' \ - '[ $($PROG file | awk "{print \$3}" | grep -c "^B2$") == 1 ]' |