t1402: work around shell quoting issue on NetBSD

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(). Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>

René Scharfe committed Jan 8, 2013 at 21:23 UTC 283b365e4521082ab37d93762bb2f049dc38bee8
1 file changed +4 -2
t/t1402-check-ref-format.sh
+4 -2
@@ -11,7 +11,8 @@ valid_ref() {
11 prereq=$1
12 shift
13 esac
14 - test_expect_success $prereq "ref name '$1' is valid${2:+ with options $2}" "
14 + desc="ref name '$1' is valid${2:+ with options $2}"
15 + test_expect_success $prereq "$desc" "
16 git check-ref-format $2 '$1'
17 "
18 }
@@ -22,7 +23,8 @@ invalid_ref() {
23 prereq=$1
24 shift
25 esac
25 - test_expect_success $prereq "ref name '$1' is invalid${2:+ with options $2}" "
26 + desc="ref name '$1' is invalid${2:+ with options $2}"
27 + test_expect_success $prereq "$desc" "
28 test_must_fail git check-ref-format $2 '$1'
29 "
30 }