view tests/tradcpp.sh @ 136:59680a727e9d

Improve previous. Just in case we ever crash and reach cleanup() while processing an -include foo option, take the array entry for it out of the array to make sure it doesn't get freed twice. This case shouldn't be reachable, but it's better to be safe.
author David A. Holland
date Tue, 09 Jul 2013 13:38:43 -0400
parents 937d310debaa
children
line wrap: on
line source

test_case() {
	local name="$1"
	local source="$2"
	local tradcpp="$3"
	local descr="Test tradcpp behavior"
	atf_test_case ${name}
	if [ -e "$(atf_get_srcdir)/${name}.txt" ]; then
		descr=$(cat "$(atf_get_srcdir)/${name}.txt")
	fi
	eval "${name}_head() { \
		atf_set descr \"${descr}\"; \
		atf_set require.progs \"/usr/bin/tradcpp\"; \
	}"
	local stdout="file:$(atf_get_srcdir)/${name}.good"
	local options=""
	local options_file="$(atf_get_srcdir)/${name}.cmdline"
	if [ -e ${options_file} ]; then
		options=$(cat ${options_file})
	fi
	eval "${name}_body() { \
		atf_check -s eq:0 -o ${stdout} -x '${tradcpp} ${options} ${source} 2>&1 || echo FAILED'; \
	}"
}

atf_init_test_cases() {
	local tradcpp=$(make -V .OBJDIR -C $(atf_get_srcdir)/..)/tradcpp
	if [ ! -x ${tradcpp} ]; then
		tradcpp=/usr/bin/tradcpp
	fi
	cd $(atf_get_srcdir)
	for testfile in t*.c; do
		local name=${testfile%%.c}
		test_case ${name} ${testfile} ${tradcpp}
		atf_add_test_case ${name}
	done
}