[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-smalltalk] [PATCH] Convert testsuite to autotest
From: |
Paolo Bonzini |
Subject: |
[Help-smalltalk] [PATCH] Convert testsuite to autotest |
Date: |
Sun, 20 May 2007 15:42:07 +0200 |
User-agent: |
Thunderbird 2.0.0.0 (Macintosh/20070326) |
This gives a little more flexibility, so that I can add SUnit testing
more easily.
Paolo
--- orig/configure.ac
+++ mod/configure.ac
@@ -17,6 +17,7 @@ GST_REVISION(6:1:2)
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([build-aux])
AC_CONFIG_SRCDIR([main.c])
+AC_CONFIG_TESTDIR(tests)
AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE
AC_CANONICAL_HOST
@@ -58,6 +59,7 @@ dnl We only want the GNU implementations
AM_MISSING_PROG(LEX, flex, $missing_dir)
AM_MISSING_PROG(YACC, bison, $missing_dir)
AM_MISSING_PROG(GPERF, gperf, $missing_dir)
+AM_MISSING_PROG(AUTOM4TE, autom4te, $missing_dir)
dnl
dnl ------------------------------ SUBDIRS --------------------
--- orig/tests/Makefile.am
+++ mod/tests/Makefile.am
@@ -1,91 +1,10 @@
-TESTS = $(low_level_tests) $(benchmark_tests) $(ansi_tests)
-
-low_level_tests = arrays.st classes.st blocks.st \
- sets.st processes.st exceptions.st \
- intmath.st floatmath.st dates.st \
- objects.st strings.st chars.st objdump.st \
- delays.st geometry.st cobjects.st compiler.st \
- fileext.st mutate.st untrusted.st getopt.st \
- quit.st
-
-benchmark_tests = ackermann.st ary3.st except.st \
- fibo.st hash.st hash2.st heapsort.st \
- lists.st lists1.st lists2.st matrix.st \
- methcall.st nestedloop.st objinst.st \
- prodcons.st random-bench.st sieve.st strcat.st
-
-ansi_tests = \
- ArrayANSITest \
- ArrayFactoryANSITest \
- BagANSITest \
- BagFactoryANSITest \
- BooleanANSITest \
- ByteArrayANSITest \
- ByteArrayFactoryANSITest \
- CharacterANSITest \
- CharacterFactoryANSITest \
- DateAndTimeANSITest \
- DateAndTimeFactoryANSITest \
- DictionaryANSITest \
- DictionaryFactoryANSITest \
- DurationANSITest \
- DurationFactoryANSITest \
- DyadicValuableANSITest \
- ErrorANSITest \
- ErrorClassANSITest \
- ExceptionANSITest \
- ExceptionClassANSITest \
- ExceptionSetANSITest \
- FailedMessageANSITest \
- FileStreamFactoryANSITest \
- FloatANSITest \
- FloatCharacterizationANSITest \
- FractionANSITest \
- FractionFactoryANSITest \
- IdentityDictionaryANSITest \
- IdentityDictionaryFactoryANSITest \
- IntegerANSITest \
- IntervalANSITest \
- IntervalFactoryANSITest \
- MessageNotUnderstoodANSITest \
- MessageNotUnderstoodSelectorANSITest \
- MonadicBlockANSITest \
- NilANSITest \
- NiladicBlockANSITest \
- NotificationANSITest \
- NotificationClassANSITest \
- ObjectANSITest \
- ObjectClassANSITest \
- OrderedCollectionANSITest \
- OrderedCollectionFactoryANSITest \
- ReadFileStreamANSITest \
- ReadStreamANSITest \
- ReadStreamFactoryANSITest \
- ReadWriteStreamANSITest \
- ReadWriteStreamFactoryANSITest \
- ScaledDecimalANSITest \
- SelectorANSITest \
- SetANSITest \
- SetFactoryANSITest \
- SortedCollectionANSITest \
- SortedCollectionFactoryANSITest \
- StringANSITest \
- StringFactoryANSITest \
- SymbolANSITest \
- TranscriptANSITest \
- WarningANSITest \
- WarningClassANSITest \
- WriteFileStreamANSITest \
- WriteStreamANSITest \
- WriteStreamFactoryANSITest \
- ZeroDivideANSITest \
- ZeroDivideFactoryANSITest
-
-TESTS_ENVIRONMENT=$(srcdir)/run-test
-
nodist_check_DATA = gst.im
+AUTOTEST = $(AUTOM4TE) --language=autotest
+TESTSUITE = $(srcdir)/testsuite
+
dist_noinst_DATA = \
+local.at testsuite.at $(TESTSUITE) package.m4 \
ackermann.ok ackermann.st arrays.ok arrays.st ary3.ok ary3.st blocks.ok \
blocks.st chars.ok chars.st classes.ok classes.st cobjects.ok cobjects.st \
compiler.ok compiler.st dates.ok dates.st delays.ok delays.st except.ok \
@@ -100,13 +19,9 @@ quit.st random-bench.ok random-bench.st
sets.st sieve.ok sieve.st strcat.ok strcat.st strings.ok strings.st \
Ansi.st AnsiDB.st AnsiInit.st AnsiLoad.st AnsiRun.st
-CLEANFILES = *.log *.diff gst.im
-
-EXTRA_DIST = run-test
-
-.PHONY: regress $(ansi_tests)
+CLEANFILES = gst.im
-$(ansi_tests):
+.PHONY: regress
regress:
cd $(srcdir) || exit 1; \
@@ -121,3 +36,22 @@ gst.im: ../kernel/stamp-classes AnsiLoad
cd $(srcdir) && \
@abs_top_builddir@/gst -SI @abs_top_builddir@/tests/gst.im AnsiLoad.st
+$(srcdir)/package.m4: $(top_srcdir)/configure.ac
+ { \
+ echo '# Signature of the current package.'; \
+ echo 'm4_define([AT_PACKAGE_NAME], address@hidden@])'; \
+ echo 'm4_define([AT_PACKAGE_TARNAME], address@hidden@])'; \
+ echo 'm4_define([AT_PACKAGE_VERSION], address@hidden@])'; \
+ echo 'm4_define([AT_PACKAGE_STRING], address@hidden@])'; \
+ echo 'm4_define([AT_PACKAGE_BUGREPORT], address@hidden@])'; \
+ } >'$(srcdir)/package.m4'
+
+check-local: atconfig $(TESTSUITE)
+ $(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS)
+
+clean-local:
+ -$(SHELL) '$(TESTSUITE)' --clean
+
+$(TESTSUITE): $(srcdir)/testsuite.at $(srcdir)/package.m4 $(srcdir)/local.at
+ $(AUTOTEST) -I '$(srcdir)' -o address@hidden address@hidden
+ mv address@hidden $@
--- /dev/null
+++ mod/tests/local.at
@@ -0,0 +1,48 @@
+dnl AT_CHECK_GST([COMMAND-LINE], [IMAGE], [DIR], [STDOUT], [STDERR])
+dnl ----------------------------------------------------------------
+m4_define([AT_CHECK_GST], [
+ case $AUTOTEST_PATH in
+ tests) GST="$abs_top_builddir/gst -I m4_ifval([$2], [$2],
[$abs_top_builddir/gst.im])" ;;
+ *) GST="$AUTOTEST_PATH/gst m4_ifval([$2], [-I $2])" ;;
+ esac
+
+ AT_CHECK([m4_ifval([$3], [cd $3 && ])$GST $1], 0, [$4], [$5])
+])
+
+m4_define([AT_DIFF_TEST], [
+ AT_SETUP([$1])
+ AT_KEYWORDS([base])
+ $2
+ cat $abs_srcdir/m4_bpatsubst([$1], [\.st$], [.ok]) > expout
+ AT_CHECK_GST([-r $1 2>&1], [], [$abs_srcdir], [expout])
+ AT_CLEANUP
+])
+
+m4_define([AT_PACKAGE_TEST], [
+ AT_SETUP([$1])
+ AT_KEYWORDS([m4_if([$1], [SUnit], [], [SUnit ])SUnit])
+ $2
+ AT_CHECK_GST([-f $abs_top_srcdir/scripts/Test.st -p $1], [], [], [ignore])
+ AT_CLEANUP
+])
+
+m4_define([AT_OPTIONAL_PACKAGE_TEST], [
+ AT_SETUP([$1])
+ AT_KEYWORDS([$1 SUnit])
+ $2
+ AT_CHECK_GST([-f $abs_top_srcdir/scripts/Test.st -p $1
+ ret=$?
+ case $ret in
+ 2) exit 77 ;;
+ 0|1) exit $ret ;;
+ esac], [], [], [ignore])
+ AT_CLEANUP
+])
+
+m4_define([AT_ANSI_TEST], [
+ AT_SETUP([$1])
+ AT_KEYWORDS([ANSI SUnit])
+ $2
+ AT_CHECK_GST([-f $abs_srcdir/AnsiRun.st $1], [$abs_builddir/gst.im], [],
[ignore])
+ AT_CLEANUP
+])
--- /dev/null
+++ mod/tests/testsuite.at
@@ -0,0 +1,138 @@
+## Autotest testsuite for GNU Smalltalk.
+
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+m4_include([package.m4])
+m4_include([local.at])
+
+AT_INIT
+AT_TESTED(../gst)
+
+AT_BANNER([Regression tests.])
+AT_DIFF_TEST([arrays.st])
+AT_DIFF_TEST([classes.st])
+AT_DIFF_TEST([blocks.st])
+AT_DIFF_TEST([sets.st])
+AT_DIFF_TEST([processes.st])
+AT_DIFF_TEST([exceptions.st])
+AT_DIFF_TEST([intmath.st])
+AT_DIFF_TEST([floatmath.st])
+AT_DIFF_TEST([dates.st])
+AT_DIFF_TEST([objects.st])
+AT_DIFF_TEST([strings.st])
+AT_DIFF_TEST([chars.st])
+AT_DIFF_TEST([objdump.st])
+AT_DIFF_TEST([delays.st])
+AT_DIFF_TEST([geometry.st])
+AT_DIFF_TEST([cobjects.st])
+AT_DIFF_TEST([compiler.st])
+AT_DIFF_TEST([fileext.st])
+AT_DIFF_TEST([mutate.st], [AT_XFAIL_IF(:)])
+AT_DIFF_TEST([untrusted.st])
+AT_DIFF_TEST([getopt.st])
+AT_DIFF_TEST([quit.st])
+
+AT_BANNER([Other simple tests.])
+AT_DIFF_TEST([ackermann.st])
+AT_DIFF_TEST([ary3.st])
+AT_DIFF_TEST([except.st])
+AT_DIFF_TEST([fibo.st])
+AT_DIFF_TEST([hash.st])
+AT_DIFF_TEST([hash2.st])
+AT_DIFF_TEST([heapsort.st])
+AT_DIFF_TEST([lists.st])
+AT_DIFF_TEST([lists1.st])
+AT_DIFF_TEST([lists2.st])
+AT_DIFF_TEST([matrix.st])
+AT_DIFF_TEST([methcall.st])
+AT_DIFF_TEST([nestedloop.st])
+AT_DIFF_TEST([objinst.st])
+AT_DIFF_TEST([prodcons.st])
+AT_DIFF_TEST([random-bench.st])
+AT_DIFF_TEST([sieve.st])
+AT_DIFF_TEST([strcat.st])
+
+AT_BANNER([Basic packages.])
+AT_PACKAGE_TEST([SUnit])
+
+AT_BANNER([ANSI compliancy tests.])
+AT_ANSI_TEST([ArrayANSITest])
+AT_ANSI_TEST([ArrayFactoryANSITest])
+AT_ANSI_TEST([BagANSITest])
+AT_ANSI_TEST([BagFactoryANSITest])
+AT_ANSI_TEST([BooleanANSITest])
+AT_ANSI_TEST([ByteArrayANSITest])
+AT_ANSI_TEST([ByteArrayFactoryANSITest])
+AT_ANSI_TEST([CharacterANSITest])
+AT_ANSI_TEST([CharacterFactoryANSITest])
+AT_ANSI_TEST([DateAndTimeANSITest])
+AT_ANSI_TEST([DateAndTimeFactoryANSITest])
+AT_ANSI_TEST([DictionaryANSITest])
+AT_ANSI_TEST([DictionaryFactoryANSITest])
+AT_ANSI_TEST([DurationANSITest])
+AT_ANSI_TEST([DurationFactoryANSITest])
+AT_ANSI_TEST([DyadicValuableANSITest])
+AT_ANSI_TEST([ErrorANSITest])
+AT_ANSI_TEST([ErrorClassANSITest])
+AT_ANSI_TEST([ExceptionANSITest])
+AT_ANSI_TEST([ExceptionClassANSITest])
+AT_ANSI_TEST([ExceptionSetANSITest])
+AT_ANSI_TEST([FailedMessageANSITest])
+AT_ANSI_TEST([FileStreamFactoryANSITest])
+AT_ANSI_TEST([FloatANSITest])
+AT_ANSI_TEST([FloatCharacterizationANSITest])
+AT_ANSI_TEST([FractionANSITest])
+AT_ANSI_TEST([FractionFactoryANSITest])
+AT_ANSI_TEST([IdentityDictionaryANSITest])
+AT_ANSI_TEST([IdentityDictionaryFactoryANSITest])
+AT_ANSI_TEST([IntegerANSITest])
+AT_ANSI_TEST([IntervalANSITest])
+AT_ANSI_TEST([IntervalFactoryANSITest])
+AT_ANSI_TEST([MessageNotUnderstoodANSITest])
+AT_ANSI_TEST([MessageNotUnderstoodSelectorANSITest])
+AT_ANSI_TEST([MonadicBlockANSITest])
+AT_ANSI_TEST([NilANSITest])
+AT_ANSI_TEST([NiladicBlockANSITest])
+AT_ANSI_TEST([NotificationANSITest])
+AT_ANSI_TEST([NotificationClassANSITest])
+AT_ANSI_TEST([ObjectANSITest])
+AT_ANSI_TEST([ObjectClassANSITest])
+AT_ANSI_TEST([OrderedCollectionANSITest])
+AT_ANSI_TEST([OrderedCollectionFactoryANSITest])
+AT_ANSI_TEST([ReadFileStreamANSITest])
+AT_ANSI_TEST([ReadStreamANSITest])
+AT_ANSI_TEST([ReadStreamFactoryANSITest])
+AT_ANSI_TEST([ReadWriteStreamANSITest])
+AT_ANSI_TEST([ReadWriteStreamFactoryANSITest])
+AT_ANSI_TEST([ScaledDecimalANSITest])
+AT_ANSI_TEST([SelectorANSITest])
+AT_ANSI_TEST([SetANSITest])
+AT_ANSI_TEST([SetFactoryANSITest])
+AT_ANSI_TEST([SortedCollectionANSITest])
+AT_ANSI_TEST([SortedCollectionFactoryANSITest])
+AT_ANSI_TEST([StringANSITest])
+AT_ANSI_TEST([StringFactoryANSITest])
+AT_ANSI_TEST([SymbolANSITest])
+AT_ANSI_TEST([TranscriptANSITest])
+AT_ANSI_TEST([WarningANSITest])
+AT_ANSI_TEST([WarningClassANSITest])
+AT_ANSI_TEST([WriteFileStreamANSITest])
+AT_ANSI_TEST([WriteStreamANSITest])
+AT_ANSI_TEST([WriteStreamFactoryANSITest])
+AT_ANSI_TEST([ZeroDivideANSITest])
+AT_ANSI_TEST([ZeroDivideFactoryANSITest])
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Help-smalltalk] [PATCH] Convert testsuite to autotest,
Paolo Bonzini <=