 56722a0635
			
		
	
	56722a0635
	
	
	
		
			
			Improve the testing for test-lib.sh itself to assert that we have a
exit code of 1, not any non-zero. Improves code added in
0445e6f0a1 (test-lib: '--run' to run only specific tests,
2014-04-30).
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
	
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| write_sub_test_lib_test () {
 | |
| 	name="$1" # stdin is the body of the test code
 | |
| 	mkdir "$name" &&
 | |
| 	write_script "$name/$name.sh" "$TEST_SHELL_PATH" <<-EOF &&
 | |
| 	test_description='A test of test-lib.sh itself'
 | |
| 
 | |
| 	# Point to the t/test-lib.sh, which isn't in ../ as usual
 | |
| 	. "\$TEST_DIRECTORY"/test-lib.sh
 | |
| 	EOF
 | |
| 	cat >>"$name/$name.sh"
 | |
| }
 | |
| 
 | |
| _run_sub_test_lib_test_common () {
 | |
| 	cmp_op="$1" want_code="$2" name="$3" # stdin is the body of the test code
 | |
| 	shift 3
 | |
| 
 | |
| 	# intercept pseudo-options at the front of the argument list that we
 | |
| 	# will not pass to child script
 | |
| 	skip=
 | |
| 	while test $# -gt 0
 | |
| 	do
 | |
| 		case "$1" in
 | |
| 		--skip=*)
 | |
| 			skip=${1#--*=}
 | |
| 			shift
 | |
| 			;;
 | |
| 		*)
 | |
| 			break
 | |
| 			;;
 | |
| 		esac
 | |
| 	done
 | |
| 
 | |
| 	(
 | |
| 		cd "$name" &&
 | |
| 
 | |
| 		# Pretend we're not running under a test harness, whether we
 | |
| 		# are or not. The test-lib output depends on the setting of
 | |
| 		# this variable, so we need a stable setting under which to run
 | |
| 		# the sub-test.
 | |
| 		sane_unset HARNESS_ACTIVE &&
 | |
| 
 | |
| 		export TEST_DIRECTORY &&
 | |
| 		# The child test re-sources GIT-BUILD-OPTIONS and may thus
 | |
| 		# override the test output directory. We thus pass it as an
 | |
| 		# explicit override to the child.
 | |
| 		TEST_OUTPUT_DIRECTORY_OVERRIDE=$(pwd) &&
 | |
| 		export TEST_OUTPUT_DIRECTORY_OVERRIDE &&
 | |
| 		GIT_SKIP_TESTS=$skip &&
 | |
| 		export GIT_SKIP_TESTS &&
 | |
| 		sane_unset GIT_TEST_FAIL_PREREQS &&
 | |
| 		./"$name.sh" "$@" >out 2>err;
 | |
| 		ret=$? &&
 | |
| 		test "$ret" "$cmp_op" "$want_code"
 | |
| 	)
 | |
| }
 | |
| 
 | |
| write_and_run_sub_test_lib_test () {
 | |
| 	name="$1" descr="$2" # stdin is the body of the test code
 | |
| 	write_sub_test_lib_test "$@" || return 1
 | |
| 	_run_sub_test_lib_test_common -eq 0 "$@"
 | |
| }
 | |
| 
 | |
| write_and_run_sub_test_lib_test_err () {
 | |
| 	name="$1" descr="$2" # stdin is the body of the test code
 | |
| 	write_sub_test_lib_test "$@" || return 1
 | |
| 	_run_sub_test_lib_test_common -eq 1 "$@"
 | |
| }
 | |
| 
 | |
| run_sub_test_lib_test () {
 | |
| 	_run_sub_test_lib_test_common -eq 0 "$@"
 | |
| }
 | |
| 
 | |
| run_sub_test_lib_test_err () {
 | |
| 	_run_sub_test_lib_test_common -eq 1 "$@"
 | |
| }
 | |
| 
 | |
| _check_sub_test_lib_test_common () {
 | |
| 	name="$1" &&
 | |
| 	sed -e 's/^> //' -e 's/Z$//' >"$name"/expect.out &&
 | |
| 	test_cmp "$name"/expect.out "$name"/out
 | |
| }
 | |
| 
 | |
| check_sub_test_lib_test () {
 | |
| 	name="$1" # stdin is the expected output from the test
 | |
| 	_check_sub_test_lib_test_common "$name" &&
 | |
| 	test_must_be_empty "$name"/err
 | |
| }
 | |
| 
 | |
| check_sub_test_lib_test_err () {
 | |
| 	name="$1" # stdin is the expected output from the test
 | |
| 	_check_sub_test_lib_test_common "$name" &&
 | |
| 	# expected error output is in descriptor 3
 | |
| 	sed -e 's/^> //' -e 's/Z$//' <&3 >"$name"/expect.err &&
 | |
| 	test_cmp "$name"/expect.err "$name"/err
 | |
| }
 |