diff options
Diffstat (limited to 'tests/Makefile.am')
-rw-r--r-- | tests/Makefile.am | 581 |
1 files changed, 458 insertions, 123 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 25d8b0c..78eaf3d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -19,129 +19,464 @@ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. +TESTS = $(check_PROGRAMS) options.cn + +# The script testwrapper.sh will run most tests as is. A couple tests +# in the suite end in .reject, .table and the like so that we can pass +# different arguments to the test runner. We list those extensions so +# automake knows how to distinguish between the various kinds of tests +# we have. + +TEST_EXTENSIONS = .reject .table .direct .cn .i3 .pthread .one .opt .ser .ver + +LOG_COMPILER = $(srcdir)/testwrapper.sh +AM_LOG_FLAGS = -d $(srcdir) -r + +REJECT_LOG_COMPILER = $(srcdir)/testwrapper.sh +AM_REJECT_LOG_FLAGS = -d $(srcdir) -i reject.txt -r + +TABLE_LOG_COMPILER = $(srcdir)/testwrapper.sh +AM_TABLE_LOG_FLAGS = -d $(builddir) -i $(srcdir)/reject.txt -t + +DIRECT_LOG_COMPILER=$(srcdir)/testwrapper.sh +AM_DIRECT_LOG_FLAGS = -d $(srcdir) + +CN_LOG_COMPILER=$(srcdir)/options.cn +AM_CN_LOG_FLAGS=$(FLEX) + +I3_LOG_COMPILER=$(srcdir)/testwrapper.sh +AM_I3_LOG_FLAGS=-i $(srcdir)/cxx_yywrap.txt -i $(srcdir)/cxx_yywrap.txt -i $(srcdir)/cxx_yywrap.txt + +PTHREAD_LOG_COMPILER=$(srcdir)/testwrapper.sh +AM_PTHREAD_LOG_FLAGS=-i $(srcdir)/pthread_1.txt -i $(srcdir)/pthread_2.txt -i $(srcdir)/pthread_3.txt -i $(srcdir)/pthread_4.txt -i $(srcdir)/pthread_5.txt + +ONE_LOG_COMPILER = $(srcdir)/testwrapper.sh +AM_ONE_LOG_FLAGS = -1 -d $(srcdir) + +AM_YFLAGS = -d -p test + +check_PROGRAMS = $(simple_tests) $(reject_tests) $(TABLE_TESTS) $(DIRECT_TESTS) $(I3_TESTS) $(PTHREAD_TESTS) $(ONE_TESTS) $(TABLEOPTS_TESTS) + +simple_tests = \ + alloc_extra \ + array_nr \ + array_r \ + basic_nr \ + basic_r \ + bison_nr \ + bison_yylloc \ + bison_yylval \ + c_cxx_nr \ + c_cxx_r \ + ccl \ + cxx_basic \ + cxx_multiple_scanners \ + debug_nr \ + debug_r \ + extended \ + header_nr \ + header_r \ + mem_nr \ + mem_r \ + multiple_scanners_nr \ + multiple_scanners_r \ + noansi_nr \ + noansi_r \ + posix \ + posixly_correct \ + prefix_nr \ + prefix_r \ + quotes \ + string_nr \ + string_r \ + top \ + yyextra + +reject_tests = \ + reject_nr.reject \ + reject_r.reject + +TABLE_TESTS = \ + reject_ver.table \ + reject_ser.table + +DIRECT_TESTS = \ + include_by_buffer.direct \ + include_by_push.direct \ + include_by_reentrant.direct \ + rescan_nr.direct \ + rescan_r.direct + +I3_TESTS = \ + cxx_yywrap.i3 + +if want_pthread +PTHREAD_TESTS = \ + pthread.pthread +endif + +ONE_TESTS = \ + lineno_nr.one \ + lineno_r.one \ + lineno_trailing.one + +alloc_extra_SOURCES = alloc_extra.l +array_nr_SOURCES = array_nr.l +array_r_SOURCES = array_r.l +basic_nr_SOURCES = basic_nr.l +basic_r_SOURCES = basic_r.l +bison_nr_SOURCES = bison_nr_scanner.l bison_nr_parser.y bison_nr_main.c +bison_yylloc_SOURCES = bison_yylloc_scanner.l bison_yylloc_parser.y bison_yylloc_main.c +bison_yylval_SOURCES = bison_yylval_scanner.l bison_yylval_parser.y bison_yylval_main.c +c_cxx_nr_SOURCES = c_cxx_nr.lll +c_cxx_r_SOURCES = c_cxx_r.lll +ccl_SOURCES = ccl.l +cxx_basic_SOURCES = cxx_basic.ll +cxx_multiple_scanners_SOURCES = cxx_multiple_scanners_main.cc cxx_multiple_scanners_1.ll cxx_multiple_scanners_2.ll +cxx_yywrap_i3_SOURCES = cxx_yywrap.ll +debug_nr_SOURCES = debug_nr.l +debug_r_SOURCES = debug_r.l +extended_SOURCES = extended.l +header_nr_SOURCES = header_nr_scanner.l header_nr_main.c +header_r_SOURCES = header_r_scanner.l header_r_main.c +include_by_buffer_direct_SOURCES = include_by_buffer.direct.l +include_by_push_direct_SOURCES = include_by_push.direct.l +include_by_reentrant_direct_SOURCES = include_by_reentrant.direct.l +lineno_nr_one_SOURCES = lineno_nr.l +lineno_r_one_SOURCES = lineno_r.l +lineno_trailing_one_SOURCES = lineno_trailing.l +mem_nr_SOURCES = mem_nr.l +mem_r_SOURCES = mem_r.l +multiple_scanners_nr_SOURCES = multiple_scanners_nr_main.c multiple_scanners_nr_1.l multiple_scanners_nr_2.l +multiple_scanners_r_SOURCES = multiple_scanners_r_main.c multiple_scanners_r_1.l multiple_scanners_r_2.l +noansi_nr_SOURCES = noansi_nr.l +noansi_r_SOURCES = noansi_r.l +posix_SOURCES = posix.l +posixly_correct_SOURCES = posixly_correct.l +prefix_nr_SOURCES = prefix_nr.l +prefix_r_SOURCES = prefix_r.l +pthread_pthread_SOURCES = pthread.l +quotes_SOURCES = quotes.l +reject_nr_reject_SOURCES = reject.l4 +reject_r_reject_SOURCES = reject.l4 +reject_ver_table_SOURCES = reject.l4 +reject_ser_table_SOURCES = reject.l4 +rescan_nr_direct_SOURCES = rescan_nr.direct.l +rescan_r_direct_SOURCES = rescan_r.direct.l +string_nr_SOURCES = string_nr.l +string_r_SOURCES = string_r.l +top_SOURCES = top.l top_main.c +yyextra_SOURCES = yyextra.l + +BUILT_SOURCES = \ + bison_nr_parser.h \ + bison_nr_scanner.h \ + bison_yylloc_parser.h \ + bison_yylloc_scanner.h \ + bison_yylval_parser.h \ + bison_yylval_scanner.h \ + header_nr_scanner.h \ + header_r_scanner.h \ + multiple_scanners_nr_1.h \ + multiple_scanners_nr_2.h \ + multiple_scanners_r_1.h \ + multiple_scanners_r_2.h \ + top.h + +# Normally, automake would distribute files built by flex. Since the +# point of the test suite is to test the files that flex builds, and +# since anyone who has the flex distribution can build a flex binary +# without having a flex binary, we want to not distribute the files +# built by flex in the test suite. The dist-hook target accomplishes +# this goal. It's also handy to have the list of files to clean since +# automake doesn't know about the whacky ways in which we're abusing +# it. + +CLEANFILES = \ + array_nr.c \ + array_r.c \ + basic_nr.c \ + basic_r.c \ + bison_nr_parser.c \ + bison_nr_parser.h \ + bison_nr_scanner.c \ + bison_nr_scanner.h \ + bison_yylloc_parser.c \ + bison_yylloc_parser.h \ + bison_yylloc_scanner.c \ + bison_yylloc_scanner.h \ + bison_yylval_parser.c \ + bison_yylval_parser.h \ + bison_yylval_scanner.c \ + bison_yylval_scanner.h \ + c_cxx_nr.cc \ + c_cxx_r.cc \ + ccl.c \ + cxx_basic.cc \ + cxx_multiple_scanners_1.cc \ + cxx_multiple_scanners_2.cc \ + cxx_yywrap.cc \ + debug_nr.c \ + debug_r.c \ + extended.c \ + header_nr_scanner.c \ + header_nr_scanner.h \ + header_r_scanner.c \ + header_r_scanner.h \ + include_by_buffer.direct.c \ + include_by_push.direct.c \ + include_by_reentrant.direct.c \ + lineno_nr.c \ + lineno_r.c \ + lineno_trailing.c \ + mem_nr.c \ + mem_r.c \ + multiple_scanners_nr_1.c \ + multiple_scanners_nr_1.h \ + multiple_scanners_nr_2.c \ + multiple_scanners_nr_2.h \ + multiple_scanners_r_1.c \ + multiple_scanners_r_1.h \ + multiple_scanners_r_2.c \ + multiple_scanners_r_2.h \ + noansi_nr.c \ + noansi_r.c \ + posix.c \ + posixly_correct.c \ + prefix_nr.c \ + prefix_r.c \ + pthread.c \ + quotes.c \ + reject_nr.reject.c \ + reject_r.reject.c \ + reject_ser.table.c \ + reject_ser.table.tables \ + reject_ver.table.c \ + reject_ver.table.tables \ + rescan_nr.direct.c \ + rescan_r.direct.c \ + string_nr.c \ + string_r.c \ + top.c \ + top.h \ + yyextra.c \ +alloc_extra.c \ + $(tableopts_c) \ + $(tableopts_tables) + +dist-hook: + for file in $(CLEANFILES) ; do \ + rm -f $(distdir)/$$file \ + ; done + EXTRA_DIST = \ - README + README \ + alloc_extra.txt \ + array_nr.txt \ + array_r.txt \ + basic_nr.txt \ + basic_r.txt \ + bison_nr.txt \ + bison_yylloc.txt \ + bison_yylval.txt \ + c_cxx_nr.txt \ + c_cxx_r.txt \ + ccl.txt \ + cxx_basic.txt \ + cxx_multiple_scanners.txt \ + cxx_yywrap.txt \ + debug_nr.txt \ + debug_r.txt \ + extended.txt \ + header_nr.txt \ + header_r.txt \ + include_by_buffer.direct.txt \ + include_by_buffer.direct_2.txt \ + include_by_buffer.direct_3.txt \ + include_by_push.direct.txt \ + include_by_push.direct_2.txt \ + include_by_push.direct_3.txt \ + include_by_reentrant.direct.txt \ + include_by_reentrant.direct_2.txt \ + include_by_reentrant.direct_3.txt \ + lineno_nr.one.txt \ + lineno_r.one.txt \ + lineno_trailing.one.txt \ + mem_nr.txt \ + mem_r.txt \ + noansi_nr.txt \ + noansi_r.txt \ + prefix_nr.txt \ + prefix_r.txt \ + pthread_1.txt \ + pthread_2.txt \ + pthread_3.txt \ + pthread_4.txt \ + pthread_5.txt \ + reject.txt \ + rescan_nr.direct.txt \ + rescan_r.direct.txt \ + quotes.txt \ + top.txt \ + yyextra.txt \ + tableopts.txt dist_noinst_SCRIPTS = \ - create-test - -DIST_SUBDIRS = \ - test-concatenated-options \ - test-c++-yywrap \ - test-extended \ - test-ccl \ - test-quotes \ - test-rescan-r \ - test-rescan-nr \ - test-basic-nr \ - test-basic-r \ - test-bison-yylloc \ - test-bison-yylval \ - test-bison-nr \ - test-multiple-scanners-nr \ - test-multiple-scanners-r \ - test-header-nr \ - test-header-r \ - test-reject \ - test-c++-multiple-scanners \ - test-c++-basic \ - test-posixly-correct \ - test-posix \ - test-mem-r \ - test-mem-nr \ - test-debug-nr \ - test-debug-r \ - test-lineno-r \ - test-lineno-nr \ - test-lineno-trailing \ - test-linedir-r \ - TEMPLATE \ - test-top \ - test-array-nr \ - test-array-r \ - test-c-cpp-nr \ - test-c-cpp-r \ - test-include-by-buffer \ - test-include-by-push \ - test-include-by-reentrant \ - test-prefix-nr \ - test-prefix-r \ - test-pthread \ - test-string-nr \ - test-string-r \ - test-yyextra \ - test-alloc-extra \ - test-noansi-nr \ - test-noansi-r \ - test-table-opts - -SUBDIRS = \ - test-concatenated-options \ - test-c++-yywrap \ - test-extended \ - test-ccl \ - test-quotes \ - test-rescan-r \ - test-rescan-nr \ - test-basic-nr \ - test-basic-r \ - test-bison-yylloc \ - test-bison-yylval \ - test-bison-nr \ - test-multiple-scanners-nr \ - test-multiple-scanners-r \ - test-header-nr \ - test-header-r \ - test-reject \ - test-c++-multiple-scanners \ - test-c++-basic \ - test-posixly-correct \ - test-posix \ - test-mem-r \ - test-mem-nr \ - test-debug-nr \ - test-debug-r \ - test-lineno-r \ - test-lineno-nr \ - test-lineno-trailing \ - test-linedir-r \ - test-array-nr \ - test-array-r \ - test-c-cpp-nr \ - test-c-cpp-r \ - test-include-by-buffer \ - test-include-by-push \ - test-include-by-reentrant \ - test-prefix-nr \ - test-prefix-r \ - test-pthread \ - test-string-nr \ - test-string-r \ - test-yyextra \ - test-alloc-extra \ - test-noansi-nr \ - test-noansi-r \ - test-top \ - test-table-opts - -# clean up before running the test suite so we dont test old builds of test code - -check-local: clean - NOK=;\ - NFAIL=;\ - for dir in $(SUBDIRS) ; do \ - echo Executing test "$$dir" ; \ - ( cd "$$dir" && $(MAKE) test > OUTPUT 2>&1 ) ; \ - case $$? in \ - 0 ) echo Test "$$dir" succeeded.; \ - NOK=0$$NOK;\ - ;; \ - * ) echo Test "$$dir" FAILED. See "$$dir"/OUTPUT for details. ; \ - NFAIL=0$$NFAIL; \ - ;; \ - esac; \ - done ; \ - echo Results: ; \ - echo Tests succeeded: `echo @ECHO_N@ "$$NOK@ECHO_C@"|wc -c`; \ - echo Tests FAILED: `echo @ECHO_N@ "$$NFAIL@ECHO_C@"|wc -c` ; \ - test "$$NFAIL" = "" + tableopts.sh + +dist_check_SCRIPTS = \ + options.cn \ + testwrapper.sh + +pthread_pthread_LDADD = -lpthread + +# specify how to process .l files in order to test the flex built by make all + +FLEX = $(top_builddir)/src/flex + +.l.c: $(FLEX) + $(FLEX) -o $@ $< + +.ll.cc: $(FLEX) + $(FLEX) -+ -o $@ $< + +bison_nr_main.($OBJEXT): bison_nr_parser.h bison_nr_scanner.h +bison_nr_scanner.h: bison_nr_scanner.c + +bison_yylloc_main.$(OBJEXT): bison_yylloc_parser.h bison_yylloc_scanner.h +bison_yylloc_scanner.h: bison_yylloc_scanner.c + +bison_yylval_main.$(OBJEXT): bison_yylval_parser.h bison_yylval_scanner.h +bison_yylval_scanner.h: bison_yylval_scanner.c + +# automake does not support compiling flex scanners output in C as C++ +# so we explicitly sayhow, using the .lll suffix for the lex input file + +.lll.cc: $(FLEX) + $(FLEX) -o $@ $< + +header_nr_main.$(OBJEXT): header_nr_scanner.h +header_nr_scanner.h: header_nr_scanner.c + +header_r_main.$(OBJEXT): header_r_scanner.h +header_r_scanner.h: header_r_scanner.c + +include_by_buffer.direct$(EXE): include_by_buffer.direct.txt include_by_buffer.direct_2.txt include_by_buffer.direct_3.txt + +include_by_push.direct$(EXE): include_by_push.direct.txt include_by_push.direct_2.txt include_by_push.direct_3.txt + +include_by_reentrant.direct$(EXE): include_by_reentrant.direct.txt include_by_reentrant.direct_2.txt include_by_reentrant.direct_3.txt + +multiple_scanners_nr_main.$(OBJEXT): multiple_scanners_nr_1.h multiple_scanners_nr_2.h +multiple_scanners_nr_1.h: multiple_scanners_nr_1.c +multiple_scanners_nr_2.h: multiple_scanners_nr_2.c + +multiple_scanners_r_main.$(OBJEXT): multiple_scanners_r_1.h multiple_scanners_r_2.h +multiple_scanners_r_1.h: multiple_scanners_r_1.c +multiple_scanners_r_2.h: multiple_scanners_r_2.c + +posixly_correct.c: posixly_correct.l $(FLEX) + POSIXLY_CORRECT=1 $(FLEX) -o $@ $< + +reject_nr.reject.c: reject.l4 $(FLEX) + $(FLEX) -o $@ $< + +reject_nr.reject$(EXEEXT): reject_nr.reject.$(OBJEXT) + $(LINK) $^ + +reject_r.reject.c: reject.l4 $(FLEX) + $(FLEX) --reentrant -o $@ $< + +reject_r.reject.$(OBJEXT): reject_r.reject.c + $(COMPILE) -DTEST_IS_REENTRANT -c -o $@ $< + +reject_r.reject$(EXEEXT): reject_r.reject.$(OBJEXT) + $(LINK) $^ + +reject_ver.table.c: reject.l4 $(FLEX) + $(FLEX) -o $@ --tables-verify --tables-file=$(basename $@).tables $< + +reject_ver.table.$(OBJEXT): reject_ver.table.c + $(COMPILE) -DTEST_HAS_TABLES_EXTERNAL -c -o $@ $< + +reject_ver.table$(EXEEXT): reject_ver.table.$(OBJEXT) + $(LINK) $^ + +reject_ser.table.c: reject.l4 $(FLEX) + $(FLEX) -o $@ --tables-file=$(basename $@).tables $< + +reject_ser.table.$(OBJEXT): reject_ser.table.c + $(COMPILE) -DTEST_HAS_TABLES_EXTERNAL -c -o $@ $< + +reject_ser.table$(EXEEXT): reject_ser.table.$(OBJEXT) + $(LINK) $^ + +top_main.$(OBJEXT): top.h +top.h: top.c + +# We separate out the tableopts _SOURCES variables and the linking +# rules for those programs because automake has no way to specify such +# things with a loop in a variable (even though make can do such +# things) and the resultant list is both long an unenlightening. And +# it can be / is generated by a shell script, tableopts.sh. + +tableopts.am: tableopts.sh + $(srcdir)/tableopts.sh > $(srcdir)/tableopts.am + +include $(srcdir)/tableopts.am + +tableopts := -Ca -Ce -Cf -CF -Cm -Cem -Cae -Caef -CaeF -Cam -Caem +tableopts_opt_tests := $(foreach opt,$(tableopts), tableopts_opt_nr$(opt) tableopts_opt_r$(opt)) +tableopts_sertests := $(foreach opt,$(tableopts), tableopts_ser_nr$(opt) tableopts_ser_r$(opt)) +tableopts_vertests := $(foreach opt,$(tableopts), tableopts_ver_nr$(opt) tableopts_ver_r$(opt)) +tableopts_tests := $(tableopts_opttests) $(tableopts_vertests) $(tableopts_sertests) + +tableopts_c := $(addsuffix .c,$(tableopts_tests)) + +OPT_LOG_COMPILER = $(srcdir)/testwrapper.sh +AM_OPT_LOG_FLAGS = -d $(srcdir) -i tableopts.txt -r + +tableopts_opt_nr%.c: tableopts.l4 $(FLEX) + $(FLEX) -P $(subst -,_,$(basename $(*F))) $* -o $@ $< + +tableopts_opt_nr%.$(OBJEXT): tableopts_opt_nr%.c + $(COMPILE) -c -o $@ $< + +tableopts_opt_r%.c: tableopts.l4 $(FLEX) + $(FLEX) -P $(subst -,_,$(basename $(*F))) --reentrant $* -o $@ $< + +tableopts_opt_r%.$(OBJEXT): tableopts_opt_r%.c + $(COMPILE) -DTEST_IS_REENTRANT -c -o $@ $< + +SER_LOG_COMPILER = $(srcdir)/testwrapper.sh +AM_SER_LOG_FLAGS = -d $(builddir) -i $(srcdir)/tableopts.txt -r -t + +tableopts_ser_nr%.c: tableopts.l4 $(FLEX) + $(FLEX) -P $(subst -,_,$(basename $(*F))) --tables-file="tableopts_ser_nr$*.ser.tables" $* -o $@ $< + +tableopts_ser_nr%.$(OBJEXT): tableopts_ser_nr%.c + $(COMPILE) -DTEST_HAS_TABLES_EXTERNAL -c -o $@ $< + +tableopts_ser_r%.c: tableopts.l4 $(FLEX) + $(FLEX) -P $(subst -,_,$(basename $(*F))) -R --tables-file="tableopts_ser_r$*.ser.tables" $* -o $@ $< + +tableopts_ser_r%.$(OBJEXT): tableopts_ser_r%.c + $(COMPILE) -DTEST_HAS_TABLES_EXTERNAL -DTEST_IS_REENTRANT -c -o $@ $< + +VER_LOG_COMPILER = $(srcdir)/testwrapper.sh +AM_VER_LOG_FLAGS = -d $(builddir) -i $(srcdir)/tableopts.txt -r -t + +tableopts_ver_nr%.c: tableopts.l4 $(FLEX) + $(FLEX) -P $(subst -,_,$(basename $(*F))) --tables-file="tableopts_ver_nr$*.ver.tables" --tables-verify $* -o $@ $< + +tableopts_ver_nr%.$(OBJEXT): tableopts_ver_nr%.c + $(COMPILE) -DTEST_HAS_TABLES_EXTERNAL -c -o $@ $< + +tableopts_ver_nr%.ver$(EXEEXT): tableopts_ver_nr%.$(OBJEXT) + $(LINK) -o $@ $^ + +tableopts_ver_r%.c: tableopts.l4 $(FLEX) + $(FLEX) -P $(subst -,_,$(basename $(*F))) -R --tables-file="tableopts_ver_r$*.ver.tables" --tables-verify $* -o $@ $< + +tableopts_ver_r%.$(OBJEXT): tableopts_ver_r%.c + $(COMPILE) -DTEST_HAS_TABLES_EXTERNAL -DTEST_IS_REENTRANT -c -o $@ $< |