From d5f4df09ff4a84dda5b03525285f03be7723376b Mon Sep 17 00:00:00 2001 From: grischka Date: Tue, 5 Feb 2013 14:27:38 +0100 Subject: [PATCH] tests: cleanup tests: - add "hello" to test first basic compilation to file/memory - add "more" test (tests2 suite) - remove some tests tests2: - move into tests dir - Convert some files from DOS to unix LF - remove 2>&1 redirection win32: - tccrun.c: modify exception filter to exit correctly (needed for btest) - tcctest.c: exclude weak_test() (feature does not exist on win32) --- Makefile | 2 - configure | 2 +- tccrun.c | 3 +- tests/Makefile | 116 ++++++++------------ tests/tcctest.c | 5 +- tests/tests2/16_nesting.expect | 36 +++--- tests/tests2/17_enum.expect | 6 +- tests/tests2/18_include.expect | 6 +- tests/tests2/18_include.h | 2 +- tests/tests2/44_scoped_declarations.c | 34 +++--- tests/tests2/45_empty_for.c | 36 +++--- tests/tests2/50_logical_second_arg.c | 58 +++++----- tests/tests2/54_goto.c | 112 +++++++++---------- tests/tests2/Makefile | 201 +++++++++++++++++----------------- 14 files changed, 296 insertions(+), 323 deletions(-) rewrite tests/tests2/Makefile (85%) diff --git a/Makefile b/Makefile index 676c098a..1179dbd1 100644 --- a/Makefile +++ b/Makefile @@ -350,12 +350,10 @@ tcc-doc.info: tcc-doc.texi export LIBTCC1 %est: - $(MAKE) -C tests2 $@ $(MAKE) -C tests $@ clean: rm -vf $(PROGS) tcc_p$(EXESUF) tcc.pod *~ *.o *.a *.so* *.out *.exe libtcc_test$(EXESUF) - $(MAKE) -C tests2 $@ $(MAKE) -C tests $@ ifneq ($(LIBTCC1),) $(MAKE) -C lib $@ diff --git a/configure b/configure index fa2c97dc..709f5932 100755 --- a/configure +++ b/configure @@ -500,7 +500,7 @@ echo "SRC_PATH=$source_path" >>config.mak # build tree in object directory if source path is different from current one if test "$source_path_used" = "yes" ; then - FILES="Makefile lib/Makefile tests/Makefile tests2/Makefile" + FILES="Makefile lib/Makefile tests/Makefile tests/tests2/Makefile" for f in $FILES ; do dir=`fn_dirname "$f"` test -d "$dir" || mkdir -p "$dir" diff --git a/tccrun.c b/tccrun.c index e28529b5..b647962c 100644 --- a/tccrun.c +++ b/tccrun.c @@ -615,8 +615,7 @@ static long __stdcall cpu_exception_handler(EXCEPTION_POINTERS *ex_info) rt_error(uc, "exception caught"); break; } - exit(-1); - return EXCEPTION_CONTINUE_SEARCH; + return EXCEPTION_EXECUTE_HANDLER; } /* Generate a stack backtrace when a CPU exception occurs. */ diff --git a/tests/Makefile b/tests/Makefile index 7ea9d92f..76854599 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -7,73 +7,61 @@ include $(TOP)/Makefile VPATH = $(top_srcdir)/tests # what tests to run -TESTS = libtest \ - test1 \ - test2 \ - test3 \ - speedtest \ - btest \ - test1b\ - test2b\ - test3b\ - weaktest - - # test4 # this test does not seem to work on any platform - # asmtest # this test does not seem to work on any platform +TESTS = \ + hello \ + libtest \ + test3 \ + moretests + +# test4 -- problem with -static +# asmtest -- minor differences with gcc +# btest -- works on i386 (including win32) +# test3 -- win32 does not know how to printf long doubles # bounds-checking is supported only on i386 ifneq ($(ARCH),i386) - TESTS := $(filter-out btest,$(TESTS)) - TESTS := $(filter-out test1b,$(TESTS)) - TESTS := $(filter-out test2b,$(TESTS)) - TESTS := $(filter-out test3b,$(TESTS)) + TESTS := $(filter-out btest,$(TESTS)) endif - -# these should work too -# TESTS += test1 test2 speedtest btest weaktest - -# some tests do not pass on all platforms, remove them for now -ifeq ($(TARGETOS),Linux) - TESTS := $(filter-out weaktest,$(TESTS)) +ifdef CONFIG_WIN32 + TESTS := $(filter-out test3,$(TESTS)) endif ifeq ($(TARGETOS),Darwin) - TESTS := $(filter-out test1,$(TESTS)) - TESTS := $(filter-out test2,$(TESTS)) - TESTS := $(filter-out test3,$(TESTS)) - TESTS := $(filter-out btest,$(TESTS)) - TESTS := $(filter-out weaktest,$(TESTS)) + TESTS := $(filter-out test3 btest,$(TESTS)) endif ifdef DISABLE_STATIC -export LD_LIBRARY_PATH:=$(CURDIR)/.. + export LD_LIBRARY_PATH:=$(CURDIR)/.. endif ifeq ($(TARGETOS),Darwin) -CFLAGS+=-Wl,-flat_namespace,-undefined,warning -export MACOSX_DEPLOYMENT_TARGET:=10.2 -NATIVE_DEFINES+=-D_ANSI_SOURCE + CFLAGS+=-Wl,-flat_namespace,-undefined,warning + export MACOSX_DEPLOYMENT_TARGET:=10.2 + NATIVE_DEFINES+=-D_ANSI_SOURCE endif # run local version of tcc with local libraries and includes -TCC = ../tcc -B.. $(NATIVE_DEFINES) +TCCFLAGS = -B$(TOP) ifdef CONFIG_WIN32 - TCC := $(TCC) -I $(top_srcdir)/win32/include -L$(top_build) + TCCFLAGS = -B$(top_srcdir)/win32 -I$(top_srcdir)/include -L$(TOP) endif -RUN_TCC = $(NATIVE_DEFINES) -run -DONE_SOURCE ../tcc.c -B.. -DISAS=objdump -d -all test : $(TESTS) +TCC = $(TOP)/tcc $(TCCFLAGS) +RUN_TCC = $(NATIVE_DEFINES) -DONE_SOURCE -run $(TOP)/tcc.c $(TCCFLAGS) -# make sure that tcc exists -test1 test2 test3 test4 btest speedtest asmtest weaktest : ../tcc -../%: - $(MAKE) -C .. $* +DISAS = objdump -d # libtcc test ifdef LIBTCC1 -LIBTCC1:=$(TOP)/$(LIBTCC1) + LIBTCC1:=$(TOP)/$(LIBTCC1) endif +all test : $(TESTS) + +hello: ../examples/ex1.c + @echo ------------ $@ ------------ + $(TCC) $< -o $@$(EXESUF) && ./$@$(EXESUF) + $(TCC) -run $< + libtest: libtcc_test$(EXESUF) $(LIBTCC1) @echo ------------ $@ ------------ ./libtcc_test$(EXESUF) lib_path=.. @@ -81,6 +69,10 @@ libtest: libtcc_test$(EXESUF) $(LIBTCC1) libtcc_test$(EXESUF): libtcc_test.c $(top_builddir)/$(LIBTCC) $(CC) -o $@ $^ $(CPPFLAGS) $(CFLAGS) $(NATIVE_DEFINES) $(LIBS) $(LINK_LIBTCC) $(LDFLAGS) +moretests: + @echo ------------ $@ ------------ + $(MAKE) -C tests2 + # test.ref - generate using gcc # copy only tcclib.h so GCC's stddef and stdarg will be used test.ref: tcctest.c @@ -94,59 +86,44 @@ test1: test.ref $(TCC) -run tcctest.c > test.out1 @if diff -u test.ref test.out1 ; then echo "Auto Test OK"; fi -test1b: test.ref - @echo ------------ $@ ------------ - $(TCC) -b -run tcctest.c > test.out1b - @if diff -u test.ref test.out1b ; then echo "Auto Test OK"; fi - # iterated test2 (compile tcc then compile tcctest.c !) test2: test.ref @echo ------------ $@ ------------ $(TCC) $(RUN_TCC) $(RUN_TCC) -run tcctest.c > test.out2 @if diff -u test.ref test.out2 ; then echo "Auto Test2 OK"; fi -test2b: test.ref ../bcheck.o - @echo ------------ $@ ------------ - $(TCC) -b $(RUN_TCC) $(RUN_TCC) -run tcctest.c > test.out2b - @if diff -u test.ref test.out2b ; then echo "Auto Test2b OK"; fi - # iterated test3 (compile tcc then compile tcc then compile tcctest.c !) test3: test.ref @echo ------------ $@ ------------ $(TCC) $(RUN_TCC) $(RUN_TCC) $(RUN_TCC) -run tcctest.c > test.out3 @if diff -u test.ref test.out3 ; then echo "Auto Test3 OK"; fi -test3b: test.ref - @echo ------------ $@ ------------ - $(TCC) -b $(RUN_TCC) $(RUN_TCC) $(RUN_TCC) -run tcctest.c > test.out3b - @if diff -u test.ref test.out3b ; then echo "Auto Test3 OK"; fi - # binary output test test4: test.ref @echo ------------ $@ ------------ -# dynamic output - $(TCC) -o tcctest1 tcctest.c - ./tcctest1 > test1.out - @if diff -u test.ref test1.out ; then echo "Dynamic Auto Test OK"; fi # object + link output $(TCC) -c -o tcctest3.o tcctest.c $(TCC) -o tcctest3 tcctest3.o ./tcctest3 > test3.out @if diff -u test.ref test3.out ; then echo "Object Auto Test OK"; fi -# static output - $(TCC) -static -o tcctest2 tcctest.c - ./tcctest2 > test2.out - @if diff -u test.ref test2.out ; then echo "Static Auto Test OK"; fi +# dynamic output + $(TCC) -o tcctest1 tcctest.c + ./tcctest1 > test1.out + @if diff -u test.ref test1.out ; then echo "Dynamic Auto Test OK"; fi # dynamic output + bound check $(TCC) -b -o tcctest4 tcctest.c ./tcctest4 > test4.out @if diff -u test.ref test4.out ; then echo "BCheck Auto Test OK"; fi +# static output + $(TCC) -static -o tcctest2 tcctest.c + ./tcctest2 > test2.out + @if diff -u test.ref test2.out ; then echo "Static Auto Test OK"; fi # memory and bound check auto test BOUNDS_OK = 1 4 8 10 14 BOUNDS_FAIL= 2 5 7 9 11 12 13 15 -btest: boundtest.c ../bcheck.o +btest: boundtest.c @echo ------------ $@ ------------ @for i in $(BOUNDS_OK); do \ echo ; echo --- boundtest $$i ---; \ @@ -212,5 +189,6 @@ cache: tcc_g # clean clean: - rm -vf *~ *.o *.a *.bin *.i *.ref *.out *.out? *.out?b *.gcc \ - tcctest[1234] ex? libtcc_test$(EXESUF) tcc_g tcclib.h + $(MAKE) -C tests2 $@ + rm -vf *~ *.o *.a *.bin *.i *.ref *.out *.out? *.out?b *.gcc *.exe \ + hello libtcc_test tcctest[1234] ex? tcc_g tcclib.h diff --git a/tests/tcctest.c b/tests/tcctest.c index 925418ae..8e295fd7 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -594,7 +594,9 @@ int main(int argc, char **argv) local_label_test(); asm_test(); builtin_test(); +#ifndef _WIN32 weak_test(); +#endif global_data_test(); cmp_comparison_test(); math_cmp_test(); @@ -2464,7 +2466,7 @@ void builtin_test(void) printf("res = %d\n", __builtin_constant_p(constant_p_var)); } - +#ifndef _WIN32 extern int __attribute__((weak)) weak_f1(void); extern int __attribute__((weak)) weak_f2(void); extern int weak_f3(void); @@ -2520,6 +2522,7 @@ int __attribute__((weak)) weak_f2() { return 222; } int __attribute__((weak)) weak_f3() { return 333; } int __attribute__((weak)) weak_v2 = 222; int __attribute__((weak)) weak_v3 = 333; +#endif void const_func(const int a) { diff --git a/tests/tests2/16_nesting.expect b/tests/tests2/16_nesting.expect index 625ee130..5a3431ee 100644 --- a/tests/tests2/16_nesting.expect +++ b/tests/tests2/16_nesting.expect @@ -1,18 +1,18 @@ -0 0 0 -0 0 1 -0 0 2 -0 1 0 -0 1 1 -0 1 2 -0 2 0 -0 2 1 -0 2 2 -1 0 0 -1 0 1 -1 0 2 -1 1 0 -1 1 1 -1 1 2 -1 2 0 -1 2 1 -1 2 2 +0 0 0 +0 0 1 +0 0 2 +0 1 0 +0 1 1 +0 1 2 +0 2 0 +0 2 1 +0 2 2 +1 0 0 +1 0 1 +1 0 2 +1 1 0 +1 1 1 +1 1 2 +1 2 0 +1 2 1 +1 2 2 diff --git a/tests/tests2/17_enum.expect b/tests/tests2/17_enum.expect index bef4be6d..0c4e153d 100644 --- a/tests/tests2/17_enum.expect +++ b/tests/tests2/17_enum.expect @@ -1,3 +1,3 @@ -0 1 2 3 54 73 74 75 -12 -54 +0 1 2 3 54 73 74 75 +12 +54 diff --git a/tests/tests2/18_include.expect b/tests/tests2/18_include.expect index 87729dfb..58c6d29a 100644 --- a/tests/tests2/18_include.expect +++ b/tests/tests2/18_include.expect @@ -1,3 +1,3 @@ -including -included -done +including +included +done diff --git a/tests/tests2/18_include.h b/tests/tests2/18_include.h index 01f894de..dc860802 100644 --- a/tests/tests2/18_include.h +++ b/tests/tests2/18_include.h @@ -1 +1 @@ -printf("included\n"); +printf("included\n"); diff --git a/tests/tests2/44_scoped_declarations.c b/tests/tests2/44_scoped_declarations.c index 2febf987..f38664fc 100644 --- a/tests/tests2/44_scoped_declarations.c +++ b/tests/tests2/44_scoped_declarations.c @@ -1,17 +1,17 @@ -#include - -int main() -{ - int a; - - for (a = 0; a < 2; a++) - { - int b = a; - } - - printf("it's all good\n"); - - return 0; -} - -/* vim: set expandtab ts=4 sw=3 sts=3 tw=80 :*/ +#include + +int main() +{ + int a; + + for (a = 0; a < 2; a++) + { + int b = a; + } + + printf("it's all good\n"); + + return 0; +} + +/* vim: set expandtab ts=4 sw=3 sts=3 tw=80 :*/ diff --git a/tests/tests2/45_empty_for.c b/tests/tests2/45_empty_for.c index b14e9d4e..7cef513f 100644 --- a/tests/tests2/45_empty_for.c +++ b/tests/tests2/45_empty_for.c @@ -1,18 +1,18 @@ -#include - -int main() -{ - int Count = 0; - - for (;;) - { - Count++; - printf("%d\n", Count); - if (Count >= 10) - break; - } - - return 0; -} - -/* vim: set expandtab ts=4 sw=3 sts=3 tw=80 :*/ +#include + +int main() +{ + int Count = 0; + + for (;;) + { + Count++; + printf("%d\n", Count); + if (Count >= 10) + break; + } + + return 0; +} + +/* vim: set expandtab ts=4 sw=3 sts=3 tw=80 :*/ diff --git a/tests/tests2/50_logical_second_arg.c b/tests/tests2/50_logical_second_arg.c index 5fa0bb91..ddec08c8 100644 --- a/tests/tests2/50_logical_second_arg.c +++ b/tests/tests2/50_logical_second_arg.c @@ -1,29 +1,29 @@ -#include - -int fred() -{ - printf("fred\n"); - return 0; -} - -int joe() -{ - printf("joe\n"); - return 1; -} - -int main() -{ - printf("%d\n", fred() && joe()); - printf("%d\n", fred() || joe()); - printf("%d\n", joe() && fred()); - printf("%d\n", joe() || fred()); - printf("%d\n", fred() && (1 + joe())); - printf("%d\n", fred() || (0 + joe())); - printf("%d\n", joe() && (0 + fred())); - printf("%d\n", joe() || (1 + fred())); - - return 0; -} - -/* vim: set expandtab ts=4 sw=3 sts=3 tw=80 :*/ +#include + +int fred() +{ + printf("fred\n"); + return 0; +} + +int joe() +{ + printf("joe\n"); + return 1; +} + +int main() +{ + printf("%d\n", fred() && joe()); + printf("%d\n", fred() || joe()); + printf("%d\n", joe() && fred()); + printf("%d\n", joe() || fred()); + printf("%d\n", fred() && (1 + joe())); + printf("%d\n", fred() || (0 + joe())); + printf("%d\n", joe() && (0 + fred())); + printf("%d\n", joe() || (1 + fred())); + + return 0; +} + +/* vim: set expandtab ts=4 sw=3 sts=3 tw=80 :*/ diff --git a/tests/tests2/54_goto.c b/tests/tests2/54_goto.c index 9509e83d..2e151bb7 100644 --- a/tests/tests2/54_goto.c +++ b/tests/tests2/54_goto.c @@ -1,56 +1,56 @@ -#include - -void fred() -{ - printf("In fred()\n"); - goto done; - printf("In middle\n"); -done: - printf("At end\n"); -} - -void joe() -{ - int b = 5678; - - printf("In joe()\n"); - - { - int c = 1234; - printf("c = %d\n", c); - goto outer; - printf("uh-oh\n"); - } - -outer: - - printf("done\n"); -} - -void henry() -{ - int a; - - printf("In henry()\n"); - goto inner; - - { - int b; -inner: - b = 1234; - printf("b = %d\n", b); - } - - printf("done\n"); -} - -int main() -{ - fred(); - joe(); - henry(); - - return 0; -} - -/* vim: set expandtab ts=4 sw=3 sts=3 tw=80 :*/ +#include + +void fred() +{ + printf("In fred()\n"); + goto done; + printf("In middle\n"); +done: + printf("At end\n"); +} + +void joe() +{ + int b = 5678; + + printf("In joe()\n"); + + { + int c = 1234; + printf("c = %d\n", c); + goto outer; + printf("uh-oh\n"); + } + +outer: + + printf("done\n"); +} + +void henry() +{ + int a; + + printf("In henry()\n"); + goto inner; + + { + int b; +inner: + b = 1234; + printf("b = %d\n", b); + } + + printf("done\n"); +} + +int main() +{ + fred(); + joe(); + henry(); + + return 0; +} + +/* vim: set expandtab ts=4 sw=3 sts=3 tw=80 :*/ diff --git a/tests/tests2/Makefile b/tests/tests2/Makefile dissimilarity index 85% index d328ce7d..bf7511ff 100644 --- a/tests/tests2/Makefile +++ b/tests/tests2/Makefile @@ -1,103 +1,98 @@ -TOP = .. -include $(TOP)/Makefile -VPATH = $(top_srcdir)/tests2 - -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 \ - 55_lshift_type.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 - -# some tests do not pass on all platforms, remove them for now -ifeq ($(TARGETOS),Darwin) - TESTS := $(filter-out 40_stdio.test,$(TESTS)) -endif -ifdef CONFIG_WIN32 - TESTS := $(filter-out 24_math_library.test,$(TESTS)) - TESTS := $(filter-out 28_strings.test,$(TESTS)) -endif - -%.test: %.c %.expect - @echo Test: $*... - @if [ "x`echo $* | grep args`" != "x" ]; \ - then \ - ../tcc -B.. $(TCCFLAGS) -run $< - arg1 arg2 arg3 arg4 2>&1 >$*.output; \ - else \ - ../tcc -B.. $(TCCFLAGS) -run $< 2>&1 >$*.output; \ - fi - @if diff -bu $(<:.c=.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 : - -clean: - rm -vf fred.txt +TOP = ../.. +include $(TOP)/Makefile +VPATH = $(top_srcdir)/tests/tests2 + +TCCFLAGS = -B$(TOP) +ifdef CONFIG_WIN32 + TCCFLAGS = -B$(top_srcdir)/win32 -I$(top_srcdir)/include -L$(TOP) +endif + +ifeq ($(TARGETOS),Darwin) + CFLAGS += -Wl,-flat_namespace,-undefined,warning + TCCFLAGS += -D_ANSI_SOURCE + export MACOSX_DEPLOYMENT_TARGET:=10.2 +endif + +TCC_RUN = $(TOP)/tcc $(TCCFLAGS) -run + +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 \ + 55_lshift_type.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 + +# some tests do not pass on all platforms, remove them for now +ifeq ($(TARGETOS),Darwin) + TESTS := $(filter-out 40_stdio.test,$(TESTS)) +endif +ifdef CONFIG_WIN32 + TESTS := $(filter-out 24_math_library.test 28_strings.test,$(TESTS)) +endif + +%.test: %.c %.expect + @echo Test: $*... + @if [ "x`echo $* | grep args`" != "x" ]; \ + then $(TCC_RUN) $< - arg1 arg2 arg3 arg4 >$*.output; \ + else $(TCC_RUN) $< >$*.output; \ + fi + @if diff -bu $(<:.c=.expect) $*.output ; \ + then rm -f $*.output; \ + else exit 1; \ + fi + +all test: $(TESTS) + +clean: + rm -vf fred.txt *.output -- 2.11.4.GIT