t4203: make blame output massaging more robust

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 cf6de18aab 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>
This commit is contained in:
Junio C Hamano 2021-01-14 12:21:55 -08:00
parent 97f4b4c4e7
commit 2d02bc91c0

View File

@ -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
'