tests: Added numerous tests.
The tests are taken almost verbatim from the open source project PicoC. It can be found at https://code.google.com/p/picoc/. The tests range from very simple/trivial ones to more complicated. My view is that the more tests the better. Without tests like this I was very reluctant to make any changes to tcc for the fear of breaking things. The tests pass on Win32, OSX, Linux x86 and x86_64. One or two tests fail on each platform due to differences in the runtime library.
This commit is contained in:
90
tests2/Makefile
Normal file
90
tests2/Makefile
Normal file
@ -0,0 +1,90 @@
|
||||
TOP = ..
|
||||
include $(TOP)/Makefile
|
||||
|
||||
ifeq ($(TARGETOS),Darwin)
|
||||
CFLAGS+=-Wl,-flat_namespace,-undefined,warning
|
||||
TCCFLAGS=-D_ANSI_SOURCE
|
||||
export MACOSX_DEPLOYMENT_TARGET:=10.2
|
||||
endif
|
||||
|
||||
ifdef CONFIG_WIN32
|
||||
TCCFLAGS=-I $(TOP)/win32/include -L$(TOP)
|
||||
endif
|
||||
|
||||
TESTS= 00_assignment.test \
|
||||
01_comment.test \
|
||||
02_printf.test \
|
||||
03_struct.test \
|
||||
04_for.test \
|
||||
05_array.test \
|
||||
06_case.test \
|
||||
07_function.test \
|
||||
08_while.test \
|
||||
09_do_while.test \
|
||||
10_pointer.test \
|
||||
11_precedence.test \
|
||||
12_hashdefine.test \
|
||||
13_integer_literals.test \
|
||||
14_if.test \
|
||||
15_recursion.test \
|
||||
16_nesting.test \
|
||||
17_enum.test \
|
||||
18_include.test \
|
||||
19_pointer_arithmetic.test \
|
||||
20_pointer_comparison.test \
|
||||
21_char_array.test \
|
||||
22_floating_point.test \
|
||||
23_type_coercion.test \
|
||||
24_math_library.test \
|
||||
25_quicksort.test \
|
||||
26_character_constants.test \
|
||||
27_sizeof.test \
|
||||
28_strings.test \
|
||||
29_array_address.test \
|
||||
31_args.test \
|
||||
32_led.test \
|
||||
33_ternary_op.test \
|
||||
35_sizeof.test \
|
||||
36_array_initialisers.test \
|
||||
37_sprintf.test \
|
||||
38_multiple_array_index.test \
|
||||
39_typedef.test \
|
||||
40_stdio.test \
|
||||
41_hashif.test \
|
||||
42_function_pointer.test \
|
||||
43_void_param.test \
|
||||
44_scoped_declarations.test \
|
||||
45_empty_for.test \
|
||||
47_switch_return.test \
|
||||
48_nested_break.test \
|
||||
49_bracket_evaluation.test \
|
||||
50_logical_second_arg.test \
|
||||
51_static.test \
|
||||
52_unnamed_enum.test \
|
||||
54_goto.test
|
||||
|
||||
# 30_hanoi.test \ # seg fault in the code, gcc as well
|
||||
# 34_array_assignment.test \ # array assignment is not in C standard
|
||||
# 46_grep.test \ # does not compile even with gcc
|
||||
|
||||
%.test: %.expect %.c
|
||||
@echo Test: $*...
|
||||
-@if [ "x`echo $* | grep args`" != "x" ]; \
|
||||
then \
|
||||
../tcc -B.. $(TCCFLAGS) -run $*.c - arg1 arg2 arg3 arg4 2>&1 >$*.output; \
|
||||
else \
|
||||
../tcc -B.. $(TCCFLAGS) -run $*.c 2>&1 >$*.output; \
|
||||
fi
|
||||
@if diff -bu $*.expect $*.output ; \
|
||||
then \
|
||||
rm -f $*.output \
|
||||
: \
|
||||
else \
|
||||
echo "ERROR: test $*"; \
|
||||
fi
|
||||
|
||||
all: test
|
||||
|
||||
test: $(TESTS)
|
||||
|
||||
# vim: set expandtab ts=4 sw=4 sts=4 tw=80 :
|
||||
Reference in New Issue
Block a user