]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t4203: make blame output massaging more robust
authorJunio C Hamano <gitster@pobox.com>
Thu, 14 Jan 2021 20:21:55 +0000 (12:21 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 15 Jan 2021 05:54:52 +0000 (21:54 -0800)
In the "git blame --porcelain" output, lines that ends with three
integers may not be the line that shows a commit object with line
numbers and block length (the contents from the blamed file or the
summary field can have a line that happens to match).  Also, the
names of the author may have more than three SP separated tokens
("git blame -L242,+1 cf6de18aabf7 Documentation/SubmittingPatches"
gives an example).  The existing "grep -E | cut" pipeline is a bit
too loose on these two points.

While they can be assumed on the test data, it is not so hard to
use the right pattern from the documented format, so let's do so.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t4203-mailmap.sh

index c9cb1aa127a1c4a461dbce8b489429938af8c5ae..a3da47368980bb6e5c49bb7d1a4015a38e9b0b35 100755 (executable)
@@ -746,11 +746,11 @@ test_expect_success 'Blame --porcelain output (complex mapping)' '
        EOF
 
        git blame --porcelain one >actual.blame &&
-       grep -E \
-               -e "[0-9]+ [0-9]+ [0-9]+$" \
-               -e "^author .*$" \
-               actual.blame >actual.grep &&
-       cut -d " " -f2-4 <actual.grep >actual.fuzz &&
+
+       NUM="[0-9][0-9]*" &&
+       sed -n <actual.blame >actual.fuzz \
+               -e "s/^author //p" \
+               -e "s/^$OID_REGEX \\($NUM $NUM $NUM\\)$/\\1/p"  &&
        test_cmp expect actual.fuzz
 '