From 92a903acfd0904e6dd6d18112428429938783d19 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 5 Mar 2006 22:07:37 -0800 Subject: [PATCH] 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 " 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 --- t/annotate-tests.sh | 81 ++++++++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 37 deletions(-) diff --git a/t/annotate-tests.sh b/t/annotate-tests.sh index 54a4dfb9f4..d25a7a1e7a 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 () { + 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 ]'