git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] t1402: work around shell quoting issue on NetBSD

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 8, 2013, 20:39 UTC
Message-ID
<7vr4lvcstt.fsf@alter.siamese.dyndns.org>
In-Reply-To
<50EC8025.8000707@lsrfire.ath.cx>
René Scharfe <rene.scharfe@lsrfire.ath.cx> writes:
Show 34 quoted lines
> The test fails for me on NetBSD 6.0.1 and reports:
>
> 	ok 1 - ref name '' is invalid
> 	ok 2 - ref name '/' is invalid
> 	ok 3 - ref name '/' is invalid with options --allow-onelevel
> 	ok 4 - ref name '/' is invalid with options --normalize
> 	error: bug in the test script: not 2 or 3 parameters to test-expect-success
>
> The alleged bug is in this line:
>
> 	invalid_ref NOT_MINGW '/' '--allow-onelevel --normalize'
>
> invalid_ref() constructs a test case description using its last argument,
> but the shell seems to split it up into two pieces if it contains a
> space.  Minimal test case:
>
> 	# on NetBSD with /bin/sh
> 	$ a() { echo $#-$1-$2; }
> 	$ t="x"; a "${t:+$t}"
> 	1-x-
> 	$ t="x y"; a "${t:+$t}"
> 	2-x-y
> 	$ t="x y"; a "${t:+x y}"
> 	1-x y-
>
> 	# and with bash
> 	$ t="x y"; a "${t:+$t}"
> 	1-x y-
> 	$ t="x y"; a "${t:+x y}"
> 	1-x y-
>
> This may be a bug in the shell, but here's a simple workaround: Construct
> the description string first and store it in a variable, and then use
> that to call test_expect_success().

Interesting. I notice that t0008 added recently to 'pu' has the same construct.

Show 30 quoted lines
>
> Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
> ---
>  t/t1402-check-ref-format.sh | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/t/t1402-check-ref-format.sh b/t/t1402-check-ref-format.sh
> index 1ae4d87..1a5a5f3 100755
> --- a/t/t1402-check-ref-format.sh
> +++ b/t/t1402-check-ref-format.sh
> @@ -11,7 +11,8 @@ valid_ref() {
>  		prereq=$1
>  		shift
>  	esac
> -	test_expect_success $prereq "ref name '$1' is valid${2:+ with options $2}" "
> +	desc="ref name '$1' is valid${2:+ with options $2}"
> +	test_expect_success $prereq "$desc" "
>  		git check-ref-format $2 '$1'
>  	"
>  }
> @@ -22,7 +23,8 @@ invalid_ref() {
>  		prereq=$1
>  		shift
>  	esac
> -	test_expect_success $prereq "ref name '$1' is invalid${2:+ with options $2}" "
> +	desc="ref name '$1' is invalid${2:+ with options $2}"
> +	test_expect_success $prereq "$desc" "
>  		test_must_fail git check-ref-format $2 '$1'
>  	"
>  }
Previous: René ScharfeNext: René Scharfe
Message 2 of 11 in “t1402: work around shell quoting issue on NetBSD”
  1. t1402: work around shell quoting issue on NetBSDRené Scharfe, Jan 8, 2013
  2. Junio C HamanoJan 8, 2013
  3. René ScharfeJan 8, 2013
  4. Junio C HamanoJan 8, 2013
  5. t0008: avoid brace expansionRené Scharfe, Jan 9, 2013
  6. Adam SpiersJan 9, 2013
  7. Junio C HamanoJan 10, 2013
  8. Adam SpiersJan 10, 2013
  9. René ScharfeJan 10, 2013
  10. Greg TroxelJan 9, 2013
  11. Greg TroxelJan 9, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.