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>
This commit is contained in:
René Scharfe 2013-01-08 21:23:01 +01:00 коммит произвёл Junio C Hamano
Родитель 4208fa5ce4
Коммит 283b365e45
1 изменённых файлов: 4 добавлений и 2 удалений

Просмотреть файл

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