threads / patch / 34612

patcht8001, t8002: fix "blame -L :literal" test on NetBSD

Subject: [PATCH] t8001, t8002: fix "blame -L :literal" test on NetBSD

## tl;dr

3 messages between Aug 5, 2013 and Aug 5, 2013. Diffs are folded; open one to read it.

replies: 2people: 3as markdown or json

René Scharfe· Aug 5, 2013, 15:21 UTC · lore

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>
---
This regression was introduced by 5a9830cb ("t8001/t8002 (blame):
add blame -L :funcname tests").
 t/annotate-tests.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
Show changes to t/annotate-tests.sh +2 −2
diff --git a/t/annotate-tests.sh b/t/annotate-tests.sh
index 0bfee00..d4e7f47 100644
--- a/t/annotate-tests.sh
+++ b/t/annotate-tests.sh
@@ -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" &&
 
-- 
1.8.1.5
Eric Sunshine· Aug 5, 2013, 15:33 UTC · re: René Scharfe · lore

Re: [PATCH] t8001, t8002: fix "blame -L :literal" test on NetBSD

On Mon, Aug 5, 2013 at 11:21 AM, René Scharfe <l.s.r@web.de> wrote:
Show 20 quoted lines
> 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,
Curious. On Mac OS X, there is only a single tab.
Show 16 quoted lines
> 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.
Tested on Mac OS X. Works correctly.
Show 29 quoted lines
> 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>
> ---
> This regression was introduced by 5a9830cb ("t8001/t8002 (blame):
> add blame -L :funcname tests").
>
>  t/annotate-tests.sh | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/t/annotate-tests.sh b/t/annotate-tests.sh
> index 0bfee00..d4e7f47 100644
> --- a/t/annotate-tests.sh
> +++ b/t/annotate-tests.sh
> @@ -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 &&
Thanks.
Acked-by: Eric Sunshine <sunshine@sunshineco.com>
>         GIT_AUTHOR_NAME="G" GIT_AUTHOR_EMAIL="G@test.git" \
>         git commit -a -m "goodbye" &&

← back to recent threads