help-smalltalk
[Top][All Lists]
Advanced

[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])


reply via email to

[Prev in Thread] Current Thread [Next in Thread]