t8001, t8002: fix "blame -L :literal" test on NetBSD
authorRené Scharfe <l.s.r@web.de>
Mon, 5 Aug 2013 15:21:17 +0000 (17:21 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 5 Aug 2013 17:43:28 +0000 (10:43 -0700)
Sub-test 42 of t8001 and t8002 ("blame -L :literal") fails on NetBSD
with the following verbose output:

git annotate -L:main hello.c
Author F (expected 4, attributed 3) bad
Author G (expected 1, attributed 1) good

This is not caused by different behaviour of git blame or annotate on
that platform, but by different test input, in turn caused by a sed
command that forgets to add a newline on NetBSD. Here's the diff of the
commit that adds "goodbye" to hello.c, for Linux:

@@ -1,4 +1,5 @@
int main(int argc, const char *argv[])
{
puts("hello");
+ puts("goodbye");
}

We see that it adds an extra TAB, but that's not a problem. Here's the
same on NetBSD:

@@ -1,4 +1,4 @@
int main(int argc, const char *argv[])
{
puts("hello");
-}
+ puts("goodbye");}

It also adds an extra TAB, but it is missing the newline character
after the semicolon.

The following patch gets rid of the extra TAB at the beginning, but
more importantly adds the missing newline at the end in a (hopefully)
portable way, mentioned in http://sed.sourceforge.net/sedfaq4.html.
The diff becomes this, on both Linux and NetBSD:

@@ -1,4 +1,5 @@
int main(int argc, const char *argv[])
{
puts("hello");
+ puts("goodbye");
}

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/annotate-tests.sh
index 0bfee001b4131d5ce38fbd9c9fb487e22a43507d..d4e7f4736f74e58da504a04be3898b0a4078fedb 100644 (file)
@@ -245,8 +245,8 @@ test_expect_success 'setup -L :regex' '
        git commit -m "hello" &&
 
        mv hello.c hello.orig &&
-       sed -e "/}/i\\
-       Qputs(\"goodbye\");" <hello.orig | tr Q "\\t" >hello.c &&
+       sed -e "/}/ {x; s/$/Qputs(\"goodbye\");/; G;}" <hello.orig |
+       tr Q "\\t" >hello.c &&
        GIT_AUTHOR_NAME="G" GIT_AUTHOR_EMAIL="G@test.git" \
        git commit -a -m "goodbye" &&