view tests/tradcpp.sh @ 135:eaae8014a94a

Don't assert and leak memory if failing during argument collection. Once you have a -D option or a -include foo option, you need to clean up the arrays those are accumulated in if you die before they're collected and handled.
author David A. Holland
date Tue, 09 Jul 2013 13:35:40 -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
}