FIX: Do not treat skipped test as passed! jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Sat, 03 Sep 2016 09:08:25 +0100
branchjv
changeset 664 e31b2e7b658d
parent 663 0a8e21b222c1
child 673 7c5c1bc3be7b
FIX: Do not treat skipped test as passed! If it breaks tools, tools should be fixed. A skipped test is not a test that passed. Period.
CircularTestResourceTestCase.st
ExampleSetTest.st
ExampleTestResource.st
FailingTestResourceTestCase.st
Make.proto
Make.spec
Makefile.init
ManyTestResourceTestCase.st
ResumableTestFailure.st
ResumableTestFailureTestCase.st
SUnitTest.st
SUnitTests2.st
SimpleTestResource.st
SimpleTestResourceA.st
SimpleTestResourceA1.st
SimpleTestResourceA2.st
SimpleTestResourceB.st
SimpleTestResourceB1.st
SimpleTestResourceCircular.st
SimpleTestResourceCircular1.st
SimpleTestResourceTestCase.st
TestResult.st
TestRunInfo.st
TestSuitesCompoundScriptTest.st
TestSuitesHierarchyScriptTest.st
TestSuitesScriptTest.st
TestTester.st
abbrev.stc
bc.mak
bmake.bat
extensions.st
libInit.cc
mingwmake.bat
stx_goodies_sunit.st
stx_goodies_sunitWINrc.rc
vcmake.bat
--- a/CircularTestResourceTestCase.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/CircularTestResourceTestCase.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 ManyTestResourceTestCase subclass:#CircularTestResourceTestCase
 	instanceVariableNames:''
 	classVariableNames:''
@@ -50,3 +52,4 @@
 version_SVN
     ^ '§Id: CircularTestResourceTestCase.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/ExampleSetTest.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/ExampleSetTest.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 TestCase subclass:#ExampleSetTest
 	instanceVariableNames:'full empty'
 	classVariableNames:''
@@ -59,3 +61,4 @@
 version_SVN
     ^ '§Id: ExampleSetTest.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/ExampleTestResource.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/ExampleTestResource.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 TestResource subclass:#ExampleTestResource
 	instanceVariableNames:'runningState'
 	classVariableNames:''
@@ -77,3 +79,4 @@
 version_SVN
     ^ '§Id: ExampleTestResource.st 182 2009-12-05 18:12:17Z vranyj1 §'
 ! !
+
--- a/FailingTestResourceTestCase.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/FailingTestResourceTestCase.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 SimpleTestResourceTestCase subclass:#FailingTestResourceTestCase
 	instanceVariableNames:''
 	classVariableNames:''
@@ -23,3 +25,4 @@
 version_SVN
     ^ '§Id: FailingTestResourceTestCase.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/Make.proto	Wed Aug 31 17:38:43 2016 +0100
+++ b/Make.proto	Sat Sep 03 09:08:25 2016 +0100
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/goodies/sunit/Make.proto,v 1.24 2014-03-23 21:08:48 cg Exp $
+# $Header$
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_goodies_sunit.
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libview2
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libview2
 
 
 # if you need any additional defines for embedded C code,
@@ -85,13 +85,29 @@
 		sed -e "s/\"\$$SVN\-Revision:\".*\"\$$\"/\"\$$SVN-Revision:\"\'$$rev2\'\"\$$\"/g" $< > .stx_goodies_sunit.svn.st; \
 	fi
 	$(MAKE) CC="$(CLASSLIB_CC)" OPT="$(OPT)" SEPINITCODE="$(SEPINITCODE)" STC="$(STC)" STFILE=.stx_goodies_sunit.svn $(C_RULE);
-	sed -i -e "s/\".stx_goodies_sunit.svn.st\");/\"\stx_goodies_sunit.st\");/g" .stx_goodies_sunit.svn.c
+	sed -i -e "s/\".stx_goodies_sunit.svn.st\");/\"stx_goodies_sunit.st\");/g" .stx_goodies_sunit.svn.c
 	$(MAKE) .stx_goodies_sunit.svn.$(O)
 	@mv .stx_goodies_sunit.svn.$(O) stx_goodies_sunit.$(O)
 endif
 
 
 
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+ifneq (**NOHG**, $(shell hg root 2> /dev/null || echo -n '**NOHG**'))
+stx_goodies_sunit.$(O): $(shell hg root)/.hg/dirstate
+endif
+
+
+
+
+# run default testsuite for this package
+test: $(TOP)/goodies/builder/reports
+	$(MAKE) -C $(TOP)/goodies/builder/reports -f Makefile.init
+	$(TOP)/goodies/builder/reports/report-runner.sh -D . -r Builder::TestReport -p $(PACKAGE)
+
+
 
 # add more install actions here
 install::
@@ -107,16 +123,15 @@
 
 # build all mandatory prerequisite packages (containing superclasses) for this package
 prereq:
-	cd ../../libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../../libui && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	cd ../../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	cd ../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	cd ../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 
 
 
 # build all packages containing referenced classes for this package
-# they are nor needed to compile the package
+# they are not needed to compile the package (but later, to load it)
 references:
 
 
@@ -131,27 +146,27 @@
 
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
-$(OUTDIR)MetricsReporter.$(O) MetricsReporter.$(H): MetricsReporter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)SUnitDelay.$(O) SUnitDelay.$(H): SUnitDelay.st $(INCLUDE_TOP)/stx/libbasic/Delay.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)SUnitNameResolver.$(O) SUnitNameResolver.$(H): SUnitNameResolver.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestAsserter.$(O) TestAsserter.$(H): TestAsserter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestCaseOutcome.$(O) TestCaseOutcome.$(H): TestCaseOutcome.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestCoverageReporter.$(O) TestCoverageReporter.$(H): TestCoverageReporter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestFailure.$(O) TestFailure.$(H): TestFailure.st $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestResult.$(O) TestResult.$(H): TestResult.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestResultReporter.$(O) TestResultReporter.$(H): TestResultReporter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestRunner.$(O) TestRunner.$(H): TestRunner.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestSuite.$(O) TestSuite.$(H): TestSuite.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestSuitesScripter.$(O) TestSuitesScripter.$(H): TestSuitesScripter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)stx_goodies_sunit.$(O) stx_goodies_sunit.$(H): stx_goodies_sunit.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)ResumableTestFailure.$(O) ResumableTestFailure.$(H): ResumableTestFailure.st $(INCLUDE_TOP)/stx/goodies/sunit/TestFailure.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestCase.$(O) TestCase.$(H): TestCase.st $(INCLUDE_TOP)/stx/goodies/sunit/TestAsserter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestCaseWithArguments.$(O) TestCaseWithArguments.$(H): TestCaseWithArguments.st $(INCLUDE_TOP)/stx/goodies/sunit/TestAsserter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestResource.$(O) TestResource.$(H): TestResource.st $(INCLUDE_TOP)/stx/goodies/sunit/TestAsserter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestResultStX.$(O) TestResultStX.$(H): TestResultStX.st $(INCLUDE_TOP)/stx/goodies/sunit/TestResult.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestSkipped.$(O) TestSkipped.$(H): TestSkipped.st $(INCLUDE_TOP)/stx/goodies/sunit/TestFailure.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)TestResultForRunWithDebug.$(O) TestResultForRunWithDebug.$(H): TestResultForRunWithDebug.st $(INCLUDE_TOP)/stx/goodies/sunit/TestResultStX.$(H) $(INCLUDE_TOP)/stx/goodies/sunit/TestResult.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/Block.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Symbol.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Class.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(STCHDR)
+$(OUTDIR)MetricsReporter.$(O) MetricsReporter.$(C) MetricsReporter.$(H): MetricsReporter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SUnitDelay.$(O) SUnitDelay.$(C) SUnitDelay.$(H): SUnitDelay.st $(INCLUDE_TOP)/stx/libbasic/Delay.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SUnitNameResolver.$(O) SUnitNameResolver.$(C) SUnitNameResolver.$(H): SUnitNameResolver.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestAsserter.$(O) TestAsserter.$(C) TestAsserter.$(H): TestAsserter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestCaseOutcome.$(O) TestCaseOutcome.$(C) TestCaseOutcome.$(H): TestCaseOutcome.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestCoverageReporter.$(O) TestCoverageReporter.$(C) TestCoverageReporter.$(H): TestCoverageReporter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestFailure.$(O) TestFailure.$(C) TestFailure.$(H): TestFailure.st $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestResult.$(O) TestResult.$(C) TestResult.$(H): TestResult.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestResultReporter.$(O) TestResultReporter.$(C) TestResultReporter.$(H): TestResultReporter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestRunner.$(O) TestRunner.$(C) TestRunner.$(H): TestRunner.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
+$(OUTDIR)TestSuite.$(O) TestSuite.$(C) TestSuite.$(H): TestSuite.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestSuitesScripter.$(O) TestSuitesScripter.$(C) TestSuitesScripter.$(H): TestSuitesScripter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)stx_goodies_sunit.$(O) stx_goodies_sunit.$(C) stx_goodies_sunit.$(H): stx_goodies_sunit.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
+$(OUTDIR)ResumableTestFailure.$(O) ResumableTestFailure.$(C) ResumableTestFailure.$(H): ResumableTestFailure.st $(INCLUDE_TOP)/stx/goodies/sunit/TestFailure.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestCase.$(O) TestCase.$(C) TestCase.$(H): TestCase.st $(INCLUDE_TOP)/stx/goodies/sunit/TestAsserter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestResource.$(O) TestResource.$(C) TestResource.$(H): TestResource.st $(INCLUDE_TOP)/stx/goodies/sunit/TestAsserter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestResultStX.$(O) TestResultStX.$(C) TestResultStX.$(H): TestResultStX.st $(INCLUDE_TOP)/stx/goodies/sunit/TestResult.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestSkipped.$(O) TestSkipped.$(C) TestSkipped.$(H): TestSkipped.st $(INCLUDE_TOP)/stx/goodies/sunit/TestFailure.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestCaseWithArguments.$(O) TestCaseWithArguments.$(C) TestCaseWithArguments.$(H): TestCaseWithArguments.st $(INCLUDE_TOP)/stx/goodies/sunit/TestAsserter.$(H) $(INCLUDE_TOP)/stx/goodies/sunit/TestCase.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TestResultForRunWithDebug.$(O) TestResultForRunWithDebug.$(C) TestResultForRunWithDebug.$(H): TestResultForRunWithDebug.st $(INCLUDE_TOP)/stx/goodies/sunit/TestResult.$(H) $(INCLUDE_TOP)/stx/goodies/sunit/TestResultStX.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Block.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Class.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic/Symbol.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/Make.spec	Wed Aug 31 17:38:43 2016 +0100
+++ b/Make.spec	Sat Sep 03 09:08:25 2016 +0100
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/goodies/sunit/Make.spec,v 1.24 2014-03-23 21:08:48 cg Exp $
+# $Header$
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_goodies_sunit.
@@ -22,7 +22,7 @@
 #                (if removed, they will be created as common
 #  -Pxxx       : defines the package
 #  -Zxxx       : a prefix for variables within the classLib
-#  -Dxxx       : defines passed to to CC for inline C-code
+#  -Dxxx       : defines passed to CC for inline C-code
 #  -Ixxx       : include path passed to CC for inline C-code
 #  +optspace   : optimized for space
 #  +optspace2  : optimized more for space
@@ -42,6 +42,7 @@
 #  -warnNonStandard : no warnings about ST/X extensions
 #  -warnEOLComments : no warnings about EOL comment extension
 #  -warnPrivacy     : no warnings about privateClass extension
+#  -warnUnused      : no warnings about unused variables
 #
 # ********** OPTIONAL: MODIFY the next line(s) ***
 # STCWARNINGS=-warn
@@ -50,9 +51,12 @@
 STCWARNINGS=-warnNonStandard
 
 COMMON_CLASSES= \
+	MetricsReporter \
 	SUnitDelay \
 	SUnitNameResolver \
 	TestAsserter \
+	TestCaseOutcome \
+	TestCoverageReporter \
 	TestFailure \
 	TestResult \
 	TestResultReporter \
@@ -62,22 +66,22 @@
 	stx_goodies_sunit \
 	ResumableTestFailure \
 	TestCase \
-	TestCaseWithArguments \
 	TestResource \
-	TestCaseOutcome \
 	TestResultStX \
+	TestSkipped \
+	TestCaseWithArguments \
 	TestResultForRunWithDebug \
-	TestCoverageReporter \
-	MetricsReporter \
-	TestSkipped \
 
 
 
 
 COMMON_OBJS= \
+    $(OUTDIR_SLASH)MetricsReporter.$(O) \
     $(OUTDIR_SLASH)SUnitDelay.$(O) \
     $(OUTDIR_SLASH)SUnitNameResolver.$(O) \
     $(OUTDIR_SLASH)TestAsserter.$(O) \
+    $(OUTDIR_SLASH)TestCaseOutcome.$(O) \
+    $(OUTDIR_SLASH)TestCoverageReporter.$(O) \
     $(OUTDIR_SLASH)TestFailure.$(O) \
     $(OUTDIR_SLASH)TestResult.$(O) \
     $(OUTDIR_SLASH)TestResultReporter.$(O) \
@@ -87,14 +91,11 @@
     $(OUTDIR_SLASH)stx_goodies_sunit.$(O) \
     $(OUTDIR_SLASH)ResumableTestFailure.$(O) \
     $(OUTDIR_SLASH)TestCase.$(O) \
-    $(OUTDIR_SLASH)TestCaseWithArguments.$(O) \
     $(OUTDIR_SLASH)TestResource.$(O) \
-    $(OUTDIR_SLASH)TestCaseOutcome.$(O) \
     $(OUTDIR_SLASH)TestResultStX.$(O) \
+    $(OUTDIR_SLASH)TestSkipped.$(O) \
+    $(OUTDIR_SLASH)TestCaseWithArguments.$(O) \
     $(OUTDIR_SLASH)TestResultForRunWithDebug.$(O) \
-    $(OUTDIR_SLASH)TestCoverageReporter.$(O) \
-    $(OUTDIR_SLASH)MetricsReporter.$(O) \
-    $(OUTDIR_SLASH)TestSkipped.$(O) \
     $(OUTDIR_SLASH)extensions.$(O) \
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile.init	Sat Sep 03 09:08:25 2016 +0100
@@ -0,0 +1,27 @@
+#
+# DO NOT EDIT
+#
+# make uses this file (Makefile) only, if there is no
+# file named "makefile" (lower-case m) in the same directory.
+# My only task is to generate the real makefile and call make again.
+# Thereafter, I am no longer used and needed.
+#
+# MACOSX caveat:
+#   as filenames are not case sensitive (in a default setup),
+#   we cannot use the above trick. Therefore, this file is now named
+#   "Makefile.init", and you have to execute "make -f Makefile.init" to
+#   get the initial makefile.  This is now also done by the toplevel CONFIG
+#   script.
+
+.PHONY: run
+
+run: makefile
+	$(MAKE) -f makefile
+
+#only needed for the definition of $(TOP)
+include Make.proto
+
+makefile: mf
+
+mf:
+	$(TOP)/rules/stmkmf
--- a/ManyTestResourceTestCase.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/ManyTestResourceTestCase.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 SimpleTestResourceTestCase subclass:#ManyTestResourceTestCase
 	instanceVariableNames:''
 	classVariableNames:''
@@ -75,3 +77,4 @@
 version_SVN
     ^ '§Id: ManyTestResourceTestCase.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/ResumableTestFailure.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/ResumableTestFailure.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 TestFailure subclass:#ResumableTestFailure
 	instanceVariableNames:''
 	classVariableNames:''
@@ -49,6 +51,12 @@
     ^ '$Header: /cvs/stx/stx/goodies/sunit/ResumableTestFailure.st,v 1.2 2011-06-29 19:15:49 cg Exp $'
 !
 
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
 version_SVN
     ^ '§Id: ResumableTestFailure.st 204 2010-09-11 15:21:51Z vranyj1 §'
 ! !
+
--- a/ResumableTestFailureTestCase.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/ResumableTestFailureTestCase.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 TestCase subclass:#ResumableTestFailureTestCase
 	instanceVariableNames:'duplicateFailureLog'
 	classVariableNames:''
@@ -77,3 +79,4 @@
 version_SVN
     ^ '§Id: ResumableTestFailureTestCase.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/SUnitTest.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/SUnitTest.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 TestCase subclass:#SUnitTest
 	instanceVariableNames:'hasRun hasSetup hasRanOnce'
 	classVariableNames:''
@@ -29,12 +31,21 @@
 !SUnitTest methodsFor:'private'!
 
 assertForTestResult: aResult runCount: aRunCount passed: aPassedCount failed: aFailureCount errors: anErrorCount
+    self assertForTestResult: aResult runCount: aRunCount passed: aPassedCount failed: aFailureCount errors: anErrorCount skipped: 0
 
-	self
-		assert: aResult runCount = aRunCount;
-		assert: aResult passedCount = aPassedCount;
-		assert: aResult failureCount = aFailureCount;
-		assert: aResult errorCount = anErrorCount
+    "Modified: / 03-09-2016 / 08:54:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+assertForTestResult: aResult runCount: aRunCount passed: aPassedCount failed: aFailureCount errors: anErrorCount skipped: skippedCount
+
+        self
+                assert: aResult runCount = aRunCount;
+                assert: aResult passedCount = aPassedCount;
+                assert: aResult failureCount = aFailureCount;
+                assert: aResult errorCount = anErrorCount;
+                assert: aResult skippedCount = skippedCount
+
+    "Created: / 03-09-2016 / 08:54:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 error
@@ -56,6 +67,12 @@
 
 setRun
 	hasRun := true
+!
+
+skipped
+        self skipIf: true description: 'Skipped'
+
+    "Created: / 03-09-2016 / 08:55:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !SUnitTest methodsFor:'running'!
@@ -199,6 +216,24 @@
 		shouldnt: [false]
 !
 
+testSkip
+
+        | case result |
+
+        case := self class selector: #skipped.
+        result := case run.
+
+        self
+                assertForTestResult: result
+                runCount: 1
+                passed: 0
+                failed: 0
+                errors: 0
+                skipped: 1
+
+    "Created: / 03-09-2016 / 08:53:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 testSuite
 
 	| suite result |
@@ -225,6 +260,12 @@
     ^ '$Header: /cvs/stx/stx/goodies/sunit/SUnitTest.st,v 1.11 2011-06-29 19:15:49 cg Exp $'
 !
 
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
 version_SVN
     ^ '§Id: SUnitTest.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/SUnitTests2.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/SUnitTests2.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 TestCase subclass:#SUnitTests2
 	instanceVariableNames:''
 	classVariableNames:''
@@ -89,3 +91,4 @@
 version_CVS
     ^ '$Header: /cvs/stx/stx/goodies/sunit/SUnitTests2.st,v 1.2 2012-08-02 20:56:07 vrany Exp $'
 ! !
+
--- a/SimpleTestResource.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/SimpleTestResource.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 TestResource subclass:#SimpleTestResource
 	instanceVariableNames:'runningState hasRun hasSetup'
 	classVariableNames:''
@@ -13,8 +15,8 @@
  The following class instance variables are inherited by this class:
 
 	TestResource - current
-	TestAsserter -
-	Object -
+	TestAsserter - 
+	Object - 
 "
 !
 
@@ -97,3 +99,4 @@
 version_SVN
     ^ '§Id: SimpleTestResource.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/SimpleTestResourceA.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/SimpleTestResourceA.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 SimpleTestResource subclass:#SimpleTestResourceA
 	instanceVariableNames:''
 	classVariableNames:''
@@ -19,3 +21,4 @@
 version_SVN
     ^ '§Id: SimpleTestResourceA.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/SimpleTestResourceA1.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/SimpleTestResourceA1.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 SimpleTestResource subclass:#SimpleTestResourceA1
 	instanceVariableNames:''
 	classVariableNames:''
@@ -13,3 +15,4 @@
 version_SVN
     ^ '§Id: SimpleTestResourceA1.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/SimpleTestResourceA2.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/SimpleTestResourceA2.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 SimpleTestResource subclass:#SimpleTestResourceA2
 	instanceVariableNames:''
 	classVariableNames:''
@@ -13,3 +15,4 @@
 version_SVN
     ^ '§Id: SimpleTestResourceA2.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/SimpleTestResourceB.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/SimpleTestResourceB.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 SimpleTestResource subclass:#SimpleTestResourceB
 	instanceVariableNames:''
 	classVariableNames:''
@@ -19,3 +21,4 @@
 version_SVN
     ^ '§Id: SimpleTestResourceB.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/SimpleTestResourceB1.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/SimpleTestResourceB1.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 SimpleTestResource subclass:#SimpleTestResourceB1
 	instanceVariableNames:''
 	classVariableNames:''
@@ -13,3 +15,4 @@
 version_SVN
     ^ '§Id: SimpleTestResourceB1.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/SimpleTestResourceCircular.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/SimpleTestResourceCircular.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 SimpleTestResource subclass:#SimpleTestResourceCircular
 	instanceVariableNames:''
 	classVariableNames:''
@@ -21,3 +23,4 @@
 version_SVN
     ^ '§Id: SimpleTestResourceCircular.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/SimpleTestResourceCircular1.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/SimpleTestResourceCircular1.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 SimpleTestResource subclass:#SimpleTestResourceCircular1
 	instanceVariableNames:''
 	classVariableNames:''
@@ -21,3 +23,4 @@
 version_SVN
     ^ '§Id: SimpleTestResourceCircular1.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/SimpleTestResourceTestCase.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/SimpleTestResourceTestCase.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 TestCase subclass:#SimpleTestResourceTestCase
 	instanceVariableNames:'resource'
 	classVariableNames:''
@@ -134,3 +136,4 @@
 version_SVN
     ^ '§Id: SimpleTestResourceTestCase.st 214 2011-03-14 12:22:21Z vranyj1 §'
 ! !
+
--- a/TestResult.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/TestResult.st	Sat Sep 03 09:08:25 2016 +0100
@@ -260,7 +260,9 @@
 
 runCount
 
-	^self passedCount + self failureCount + self errorCount
+        ^self passedCount + self failureCount + self errorCount + self skippedCount
+
+    "Modified: / 03-09-2016 / 09:00:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 skipped
@@ -467,16 +469,11 @@
      in TestResult>>runCase:. This method is meant to be overriden by
      custom TestResult subclasses."
 
-    [    
-        aTestCase runCase.
-    ] sunitOn:self class skipped do: [:ex |
-        ex sunitAnnounce: aTestCase toResult: self.
-        ex return.
-    ].    
-
+    aTestCase runCase.
 
     "Modified: / 02-08-2011 / 18:10:09 / cg"
     "Created: / 03-08-2011 / 14:02:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 03-09-2016 / 09:02:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 runCase:aTestCase 
--- a/TestRunInfo.st	Wed Aug 31 17:38:43 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +0,0 @@
-"{ Package: 'stx:goodies/sunit' }"
-
-Object subclass:#TestCaseOutcome
-	instanceVariableNames:'testCase result properties'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'SUnit-Base'
-!
-
-!TestCaseOutcome class methodsFor:'documentation'!
-
-documentation
-"
-    will keep additional info for a testCase run:
-        startTime, endTime,
-        backtrace (if fail or error)
-        and collectedStdout
-"
-! !
-
-!TestCaseOutcome class methodsFor:'instance creation'!
-
-forCase: aTestCase
-
-    ^self new testCase: aTestCase; yourself
-
-    "Created: / 16-08-2011 / 15:24:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!TestCaseOutcome methodsFor:'accessing'!
-
-collectedOutput
-
-    ^self propertyAt: #collectedOutput
-
-    "Modified: / 16-08-2011 / 15:27:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Created: / 16-08-2011 / 18:19:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-collectedOutput: aString
-
-    ^self propertyAt: #collectedOutput put: aString
-
-    "Modified: / 16-08-2011 / 15:28:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Created: / 16-08-2011 / 18:19:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-endTime
-
-    ^self propertyAt: #endTime
-
-    "Modified: / 16-08-2011 / 15:28:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-endTime: anObject
-
-    ^self propertyAt: #endTime put: anObject
-
-    "Modified: / 16-08-2011 / 15:28:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-exceptionDetail
-
-    ^self propertyAt: #exceptionDetail
-
-    "Modified: / 16-08-2011 / 15:29:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-exceptionDetail: anObject
-
-    ^self propertyAt: #exceptionDetail put: anObject
-
-    "Modified: / 16-08-2011 / 15:29:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-propertyAt: aSymbol
-
-    self propertyAt: aSymbol ifAbsent: [nil]
-
-    "Created: / 16-08-2011 / 15:26:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-propertyAt: aSymbol ifAbsent: aBlock
-
-    properties isNil ifTrue: [^aBlock value].
-    ^properties at: aSymbol ifAbsent:aBlock.
-
-    "Created: / 16-08-2011 / 15:27:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-propertyAt: aSymbol put: anObject
-
-    properties isNil ifTrue: [properties := Dictionary new].
-    properties at: aSymbol put: anObject.
-
-    "Created: / 16-08-2011 / 15:28:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-result
-    ^ result
-!
-
-result:something
-    result := something.
-!
-
-selector
-
-    ^testCase selector
-
-    "Created: / 16-08-2011 / 15:38:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-startTime
-
-    ^self propertyAt: #startTime
-
-    "Modified: / 16-08-2011 / 15:29:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-startTime: anObject
-
-    ^self propertyAt: #startTime put: anObject
-
-    "Modified: / 16-08-2011 / 15:29:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-testCase
-    ^ testCase
-!
-
-testCase:something
-    testCase := something.
-! !
-
-!TestCaseOutcome class methodsFor:'documentation'!
-
-version_CVS
-    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestRunInfo.st,v 1.5 2011-08-16 18:17:40 vrany Exp $'
-! !
--- a/TestSuitesCompoundScriptTest.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/TestSuitesCompoundScriptTest.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 TestSuitesHierarchyScriptTest subclass:#TestSuitesCompoundScriptTest
 	instanceVariableNames:''
 	classVariableNames:''
@@ -23,3 +25,4 @@
 version_SVN
     ^ '§Id: TestSuitesCompoundScriptTest.st 182 2009-12-05 18:12:17Z vranyj1 §'
 ! !
+
--- a/TestSuitesHierarchyScriptTest.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/TestSuitesHierarchyScriptTest.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 SUnitTest subclass:#TestSuitesHierarchyScriptTest
 	instanceVariableNames:''
 	classVariableNames:''
@@ -25,3 +27,4 @@
 version_SVN
     ^ '§Id: TestSuitesHierarchyScriptTest.st 182 2009-12-05 18:12:17Z vranyj1 §'
 ! !
+
--- a/TestSuitesScriptTest.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/TestSuitesScriptTest.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
+"{ NameSpace: Smalltalk }"
+
 SUnitTest subclass:#TestSuitesScriptTest
 	instanceVariableNames:'scripter suite'
 	classVariableNames:''
@@ -110,3 +112,4 @@
 version_SVN
     ^ '§Id: TestSuitesScriptTest.st 182 2009-12-05 18:12:17Z vranyj1 §'
 ! !
+
--- a/TestTester.st	Wed Aug 31 17:38:43 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1084 +0,0 @@
-"{ Package: 'stx:goodies/sunit' }"
-
-ApplicationModel subclass:#TestTester
-	instanceVariableNames:'currentSource testCaseClassListApp testCaseMethodListApp
-		testeeClassListApp testeeMethodListApp selectedTesteeClasses
-		selectedTesteeMethods selectedTestCaseClasses
-		selectedTestCaseMethods testeeMethodListHolder
-		testCaseSourceHolder mutatedMethodSourceHolder
-		originalMethodSourceHolder testCaseClassGeneratorHolder
-		selectedTesteeMethod selectedTestCaseClass infoLabelHolder
-		diffTextView numberOfTriedMutations maxTestExecutionTime'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'SUnit-UI'
-!
-
-Object subclass:#Mutator
-	instanceVariableNames:'blockToCall treeTop'
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:TestTester
-!
-
-Error subclass:#TestSuiteIncompleteError
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:TestTester
-!
-
-Error subclass:#TimeoutError
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:TestTester
-!
-
-
-!TestTester class methodsFor:'interface specs'!
-
-windowSpec
-    "This resource specification was automatically generated
-     by the UIPainter of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the UIPainter may not be able to read the specification."
-
-    "
-     UIPainter new openOnClass:TestTester andSelector:#windowSpec
-     TestTester new openInterface:#windowSpec
-     TestTester open
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(FullSpec
-        name: windowSpec
-        window: 
-       (WindowSpec
-          label: 'TestTester'
-          name: 'TestTester'
-          min: (Point 10 10)
-          max: (Point 1024 768)
-          bounds: (Rectangle 0 0 554 504)
-          menu: mainMenu
-        )
-        component: 
-       (SpecCollection
-          collection: (
-           (MenuPanelSpec
-              name: 'ToolBar1'
-              layout: (LayoutFrame 0 0.0 0 0 0 1.0 36 0)
-              menu: toolbarMenu
-              textDefault: true
-            )
-           (ViewSpec
-              name: 'Box4'
-              layout: (LayoutFrame 0 0 36 0 0 1 -26 1)
-              component: 
-             (SpecCollection
-                collection: (
-                 (ViewSpec
-                    name: 'TestedMethodSelectionBox'
-                    layout: (LayoutFrame 0 0 0 0 0 0.4 0 0.5)
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Tested Method'
-                          name: 'Label4'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 22 0)
-                          translateLabel: true
-                        )
-                       (SubCanvasSpec
-                          name: 'TestedMethodClassList'
-                          layout: (LayoutFrame 0 0 22 0 0 0.5 0 1)
-                          hasHorizontalScrollBar: false
-                          hasVerticalScrollBar: false
-                          majorKey: #'Tools::ClassList'
-                          subAspectHolders: 
-                         (Array
-                            
-                           (SubChannelInfoSpec
-                              subAspect: selectedClasses
-                              aspect: selectedTesteeClasses
-                            )
-                          )
-                          createNewApplication: true
-                          createNewBuilder: true
-                          postBuildCallback: postBuildTestedClassList:
-                        )
-                       (SubCanvasSpec
-                          name: 'TestedMethodMethodList'
-                          layout: (LayoutFrame 0 0.5 22 0 0 1 0 1)
-                          hasHorizontalScrollBar: false
-                          hasVerticalScrollBar: false
-                          majorKey: #'Tools::MethodList'
-                          subAspectHolders: 
-                         (Array
-                            
-                           (SubChannelInfoSpec
-                              subAspect: inGeneratorHolder
-                              aspect: testeeMethodListHolder
-                            ) 
-                           (SubChannelInfoSpec
-                              subAspect: selectedMethods
-                              aspect: selectedTesteeMethods
-                            )
-                          )
-                          createNewApplication: true
-                          createNewBuilder: true
-                          postBuildCallback: postBuildTestedMethodList:
-                        )
-                       )
-                     
-                    )
-                  )
-                 (LabelSpec
-                    label: 'Original'
-                    name: 'Label5'
-                    layout: (LayoutFrame 0 0.4 0 0 0 0.7 22 0)
-                    translateLabel: true
-                  )
-                 (TextEditorSpec
-                    name: 'OriginalMethodEditor'
-                    layout: (LayoutFrame 0 0.4 22 0 0 0.7 0 0.5)
-                    model: originalMethodSourceHolder
-                    hasHorizontalScrollBar: true
-                    hasVerticalScrollBar: true
-                    hasKeyboardFocusInitially: false
-                  )
-                 (LabelSpec
-                    label: 'Mutation'
-                    name: 'Label6'
-                    layout: (LayoutFrame 0 0.7 0 0 0 1 22 0)
-                    translateLabel: true
-                  )
-                 (TextEditorSpec
-                    name: 'MutatedMethodEditor'
-                    layout: (LayoutFrame 0 0.7 22 0 0 1 0 0.5)
-                    model: mutatedMethodSourceHolder
-                    hasHorizontalScrollBar: true
-                    hasVerticalScrollBar: true
-                    hasKeyboardFocusInitially: false
-                  )
-                 (ViewSpec
-                    name: 'TestSuiteSelectionBox'
-                    layout: (LayoutFrame 0 0 0 0.5 0 0.4 0 1)
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'TestCase'
-                          name: 'Label3'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 22 0)
-                          translateLabel: true
-                        )
-                       (SubCanvasSpec
-                          name: 'TestCaseClassList'
-                          layout: (LayoutFrame 0 0 22 0 0 1 0 1)
-                          hasHorizontalScrollBar: false
-                          hasVerticalScrollBar: false
-                          majorKey: #'Tools::ClassList'
-                          subAspectHolders: 
-                         (Array
-                            
-                           (SubChannelInfoSpec
-                              subAspect: inGeneratorHolder
-                              aspect: testCaseClassGeneratorHolder
-                            ) 
-                           (SubChannelInfoSpec
-                              subAspect: selectedClasses
-                              aspect: selectedTestCaseClasses
-                            )
-                          )
-                          createNewApplication: true
-                          createNewBuilder: true
-                          postBuildCallback: postBuildTestCaseClassList:
-                        )
-                       )
-                     
-                    )
-                  )
-                 (LabelSpec
-                    name: 'Label7'
-                    layout: (LayoutFrame 0 0.5 0 0.5 0 1 22 0.5)
-                    translateLabel: true
-                  )
-                 (TextEditorSpec
-                    name: 'TextCaseEditor1'
-                    layout: (LayoutFrame 0 0.4 22 0.5 0 1 0 1)
-                    model: testCaseSourceHolder
-                    hasHorizontalScrollBar: true
-                    hasVerticalScrollBar: true
-                    hasKeyboardFocusInitially: false
-                  )
-                 (ArbitraryComponentSpec
-                    name: 'ArbitraryComponent1'
-                    layout: (LayoutFrame 0 0.4 0 0 0 1 0 0.5)
-                    hasHorizontalScrollBar: true
-                    hasVerticalScrollBar: true
-                    miniScrollerHorizontal: true
-                    component: DiffTextView
-                    postBuildCallback: postBuildDiffTextView:
-                  )
-                 )
-               
-              )
-            )
-           (ViewSpec
-              name: 'Box2'
-              layout: (LayoutFrame 0 0 -26 1 0 1 0 1)
-              level: 1
-              component: 
-             (SpecCollection
-                collection: (
-                 (LabelSpec
-                    label: 'InfoLabel'
-                    name: 'Label2'
-                    layout: (LayoutFrame 0 0 -26 1 -1 1 0 1)
-                    level: -1
-                    translateLabel: true
-                    labelChannel: infoLabelHolder
-                    adjust: left
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
-      )
-! !
-
-!TestTester class methodsFor:'menu specs'!
-
-mainMenu
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-    "
-     MenuEditor new openOnClass:TestTester andSelector:#mainMenu
-     (Menu new fromLiteralArrayEncoding:(TestTester mainMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(Menu
-        (
-         (MenuItem
-            label: 'File'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Exit'
-                  itemValue: closeRequest
-                  translateLabel: true
-                )
-               )
-              nil
-              nil
-            )
-          )
-         (MenuItem
-            label: 'Help'
-            translateLabel: true
-            startGroup: right
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Documentation'
-                  itemValue: openDocumentation
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'About this Application...'
-                  itemValue: openAboutThisApplication
-                  translateLabel: true
-                )
-               )
-              nil
-              nil
-            )
-          )
-         )
-        nil
-        nil
-      )
-!
-
-toolbarMenu
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-    "
-     MenuEditor new openOnClass:TestTester andSelector:#toolbarMenu
-     (Menu new fromLiteralArrayEncoding:(TestTester toolbarMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(Menu
-        (
-         (MenuItem
-            label: 'RunCheck'
-            itemValue: menuRunCheck
-            translateLabel: true
-            isButton: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary make22x22Icon)
-          )
-         )
-        nil
-        nil
-      )
-! !
-
-!TestTester methodsFor:'aspects'!
-
-infoLabelHolder
-    infoLabelHolder isNil ifTrue:[
-        infoLabelHolder := ValueHolder new.
-    ].
-    ^ infoLabelHolder
-
-    "Created: / 25-04-2010 / 21:01:00 / cg"
-!
-
-mutatedMethodSourceHolder
-    mutatedMethodSourceHolder isNil ifTrue:[
-        mutatedMethodSourceHolder := ValueHolder new.
-    ].
-    ^ mutatedMethodSourceHolder
-
-    "Created: / 25-04-2010 / 15:53:44 / cg"
-!
-
-originalMethodSourceHolder
-    originalMethodSourceHolder isNil ifTrue:[
-        originalMethodSourceHolder := ValueHolder new.
-    ].
-    ^ originalMethodSourceHolder
-
-    "Created: / 25-04-2010 / 15:53:58 / cg"
-!
-
-selectedTestCaseClasses
-    selectedTestCaseClasses isNil ifTrue:[
-        selectedTestCaseClasses := ValueHolder new.
-        selectedTestCaseClasses onChangeSend:#selectedTestCaseClassesChanged to:self.
-    ].
-    ^ selectedTestCaseClasses
-
-    "Created: / 25-04-2010 / 16:23:56 / cg"
-!
-
-selectedTesteeClasses
-    selectedTesteeClasses isNil ifTrue:[
-        selectedTesteeClasses := ValueHolder new.
-        selectedTesteeClasses onChangeSend:#selectedTesteeClassesChanged to:self.
-    ].
-    ^ selectedTesteeClasses
-
-    "Created: / 25-04-2010 / 14:00:14 / cg"
-!
-
-selectedTesteeMethods
-    selectedTesteeMethods isNil ifTrue:[
-        selectedTesteeMethods := ValueHolder new.
-        selectedTesteeMethods onChangeSend:#selectedTesteeMethodsChanged to:self.
-    ].
-    ^ selectedTesteeMethods
-
-    "Created: / 25-04-2010 / 15:50:10 / cg"
-!
-
-testCaseClassGeneratorHolder
-    testCaseClassGeneratorHolder isNil ifTrue:[
-        testCaseClassGeneratorHolder := ValueHolder new.
-    ].
-    ^ testCaseClassGeneratorHolder
-
-    "Created: / 25-04-2010 / 16:01:28 / cg"
-!
-
-testCaseSourceHolder
-    testCaseSourceHolder isNil ifTrue:[
-        testCaseSourceHolder := ValueHolder new.
-    ].
-    ^ testCaseSourceHolder
-
-    "Created: / 25-04-2010 / 15:53:07 / cg"
-!
-
-testeeMethodListHolder
-    testeeMethodListHolder isNil ifTrue:[
-        testeeMethodListHolder := ValueHolder new.
-    ].
-    ^ testeeMethodListHolder
-
-    "Created: / 25-04-2010 / 14:05:25 / cg"
-! !
-
-!TestTester methodsFor:'initialization'!
-
-postBuildDiffTextView:aView
-    diffTextView := aView
-
-    "Created: / 26-04-2010 / 10:36:42 / cg"
-!
-
-postBuildTestCaseClassList:aSubCanvas
-    |classGenerator|
-
-    classGenerator := 
-        Iterator 
-            on:[:whatToDo |
-                TestCase allSubclasses 
-                    select:[:cls | cls isAbstract not]
-                    thenDo:[:cls |
-                        whatToDo
-                            value:cls
-                    ].
-            ].
-
-    self testCaseClassGeneratorHolder value:classGenerator
-
-    "Modified: / 25-04-2010 / 16:04:44 / cg"
-!
-
-postBuildTestCaseMethodList:aSubCanvas
-    testCaseMethodListApp := aSubCanvas
-
-    "Created: / 25-04-2010 / 13:51:42 / cg"
-!
-
-postBuildTestedClassList:aSubCanvas
-    testeeClassListApp := aSubCanvas
-
-    "Modified: / 25-04-2010 / 13:50:41 / cg"
-!
-
-postBuildTestedMethodList:aSubCanvas
-    testeeMethodListApp := aSubCanvas
-
-    "Created: / 25-04-2010 / 13:50:58 / cg"
-!
-
-postBuildWith:aBuilder
-    "/ testCaseClassListApp inGeneratorHolder:[ Smalltalk allClasses ]
-
-    "Created: / 25-04-2010 / 13:47:59 / cg"
-! !
-
-!TestTester methodsFor:'menu actions'!
-
-menuRunCheck
-    selectedTestCaseClass isNil ifTrue:[
-        Dialog information:'No TestCase class selected'.
-        ^ self.
-    ].
-
-    (AbortOperationRequest , TestSuiteIncompleteError) handle:[:ex |
-        ex signal == TestSuiteIncompleteError ifTrue:[
-            self mutatedMethodSourceHolder value:ex parameter.
-        ].
-        self infoLabelHolder value:ex errorString.
-    ] do:[
-        self withWaitCursorDo:[
-            self infoLabelHolder value:'Running Suite...'.
-            self 
-                testMethod:(selectedTesteeMethod)
-                usingTest:selectedTestCaseClass.
-            self infoLabelHolder value:nil.
-        ].
-        self mutatedMethodSourceHolder value:nil.
-    ].
-    self updateDiffTextView.
-
-    "Modified: / 27-04-2010 / 09:46:09 / cg"
-!
-
-openAboutThisApplication
-    "This method was generated by the Browser/CodeGeneratorTool.
-     It will be invoked when the menu-item 'help-about' is selected."
-
-    "/ could open a customized aboutBox here ...
-    super openAboutThisApplication
-!
-
-openDocumentation
-    "This method was generated by the Browser/CodeGeneratorTool.
-     It will be invoked when the menu-item 'help-documentation' is selected."
-
-    "/ change below as required ...
-
-    "/ to open an HTML viewer on some document (under 'doc/online/<language>/' ):
-    self openDocumentationFile:'TOP.html'.
-
-    "/ add application-specific help files under the 'doc/online/<language>/help/appName'
-    "/ directory, and open a viewer with:
-    "/ self openDocumentationFile:'help/<MyApplication>/TOP.html'.
-! !
-
-!TestTester methodsFor:'misc'!
-
-showAllClassesInNameSpaceOrganisation
-    ^ true
-
-    "Created: / 25-04-2010 / 13:56:24 / cg"
-! !
-
-!TestTester methodsFor:'testing methods'!
-
-testMethod:aMethod using:selector fromTest:aTestCaseClass
-    "motivation:
-        assuming that aTestCase is a good test for aMethod,
-        any change in aMethod should be rewarded by a failing testRun."
-
-    ^ self
-        testMethod:aMethod 
-        usingTest:aTestCaseClass 
-        selectors:(aTestCaseClass testSelectors)
-
-    "Modified: / 24-04-2010 / 14:03:57 / cg"
-!
-
-testMethod:aMethod usingSuite:aTestSuite 
-    |tree newSource methodClass methodSelector|
-
-    numberOfTriedMutations := 0.
-    maxTestExecutionTime := nil.
-
-    methodClass := aMethod mclass.
-    methodSelector := aMethod selector.
-
-    self mutatedMethodSourceHolder value:nil.
-
-    AssertionFailedError handle:[:ex |
-        TestSuiteIncompleteError
-            raiseWith:aMethod source
-            errorString:'Test failed for original'.
-    ] do:[
-        self infoLabelHolder value:'Running Suite on original code...'.
-        self runSuiteExpectingSuccess:aTestSuite.
-    ].
-    tree := RBParser parseMethod:(aMethod source) onError:[:str :pos | nil ].
-    tree isNil ifTrue:[
-        self error:'cannot parse method'.
-    ].
-    tree source:nil.
-
-    "/ just to make sure: check if compiled method behaves the same
-    newSource := tree formattedCode.
-    self withCode:newSource installedAs:methodSelector inClass:methodClass do:[:newMethod |
-        AssertionFailedError handle:[:ex |
-            TestSuiteIncompleteError
-                raiseWith:aMethod source
-                errorString:'Test failed for original'.
-        ] do:[
-            self infoLabelHolder value:'Running Suite on original code again...'.
-            self runSuiteExpectingSuccess:aTestSuite.
-        ]
-    ].
-
-    self originalMethodSourceHolder value:newSource.
-    self mutatedMethodSourceHolder value:newSource.
-    self updateDiffTextView.
-
-    "/ start to fiddle with the code; the tests MUST detect each !!
-    self mutationsOf:tree do:[:modifiedTree |
-        newSource := modifiedTree formattedCode.
-        self mutatedMethodSourceHolder value:newSource.
-        self updateDiffTextView.
-
-        self withCode:newSource installedAs:methodSelector inClass:methodClass do:[:newMethod |
-            AssertionFailedError handle:[:ex |
-                TestSuiteIncompleteError 
-                    raiseWith:newSource
-                    errorString:ex errorString.
-            ] do:[
-                numberOfTriedMutations := numberOfTriedMutations + 1.
-                self infoLabelHolder value:('Running Suite on mutation %1...' bindWith:numberOfTriedMutations).
-                self runSuiteExpectingFailure:aTestSuite.
-            ]
-        ].
-    ].
-
-    "
-     self new
-        testMethod:(Integer >> #factorial)
-        usingTest:RegressionTests::IntegerTest
-        selector:#testFactorial
-    "
-
-    "Created: / 24-04-2010 / 14:06:07 / cg"
-    "Modified: / 27-04-2010 / 09:41:14 / cg"
-!
-
-testMethod:aMethod usingTest:aTestCaseClass
-    "motivation:
-        assuming that aTestCase is a good test for aMethod,
-        any change in aMethod should be rewarded by a failing testRun."
-
-    ^ self
-        testMethod:aMethod 
-        usingTest:aTestCaseClass 
-        selectors:(aTestCaseClass testSelectors)
-
-    "
-     self new 
-        testMethod:(Integer >> #factorial)
-        usingTest:RegressionTests::IntegerTest
-    "
-
-    "Created: / 25-04-2010 / 16:29:22 / cg"
-!
-
-testMethod:aMethod usingTest:aTestCaseClass selector:selector
-    "motivation:
-        assuming that aTestCase is a good test for aMethod,
-        any change in aMethod should be rewarded by a failing testRun."
-
-    ^ self
-        testMethod:aMethod 
-        usingTest:aTestCaseClass 
-        selectors:(Array with:selector)
-
-    "
-     self new 
-        testMethod:(Integer >> #factorial)
-        usingTest:RegressionTests::IntegerTest
-        selector:#testFactorial
-    "
-
-    "Created: / 24-04-2010 / 13:59:18 / cg"
-!
-
-testMethod:aMethod usingTest:aTestCaseClass selectors:collectionOfSelectors
-    "motivation:
-        assuming that aTestCase is a good test for aMethod,
-        any change in aMethod should be rewarded by a failing testRun."
-
-    |suite|
-
-    suite := TestSuite new.
-    collectionOfSelectors do:[:selector |
-        suite 
-            addTest: (aTestCaseClass selector: selector).
-    ].
-    ^ self testMethod:aMethod usingSuite:suite
-
-    "
-     self new 
-        testMethod:(Integer >> #factorial)
-        usingTest:RegressionTests::IntegerTest
-        selector:#testFactorial
-    "
-
-    "Created: / 24-04-2010 / 14:03:09 / cg"
-! !
-
-!TestTester methodsFor:'testing-helpers'!
-
-mutationsOf:aTree do:aBlock
-    (Mutator new) mutationsOf:aTree do:aBlock
-    "/ aTree acceptVisitor:(Mutator forBlock:aBlock).
-
-    "
-     self new
-        testMethod:(Integer >> #factorial)
-        usingTest:RegressionTests::IntegerTest
-        selector:#testFactorial
-    "
-
-    "Created: / 24-04-2010 / 16:22:51 / cg"
-    "Modified: / 24-04-2010 / 18:12:48 / cg"
-!
-
-runSuite:aTestSuite 
-    |t timedOut result|
-
-    timedOut := false.
-
-    t := Time millisecondsToRun:[
-        maxTestExecutionTime isNil ifTrue:[
-            result := aTestSuite run.
-        ] ifFalse:[
-            [
-                result := aTestSuite run.
-            ] valueWithWatchDog:[ timedOut := true ] afterMilliseconds:(maxTestExecutionTime * 5).
-        ].
-    ].
-    timedOut ifTrue:[ TimeoutError raiseErrorString:'Timeout - code possibly ran into endless loop ?'].
-    maxTestExecutionTime := (maxTestExecutionTime ? t) max:t.
-    ^ result
-
-    "Created: / 27-04-2010 / 01:37:42 / cg"
-    "Modified: / 27-04-2010 / 09:31:56 / cg"
-!
-
-runSuiteExpectingFailure:aTestSuite 
-    |result|
-
-    TimeoutError handle:[:ex |
-        Transcript showCR:ex description.
-        ^ self
-    ] do:[
-        result := self runSuite:aTestSuite.
-    ].
-
-    self
-        assert:result runCount > 0;
-        "/ assert:(result passedCount = 0) message:'test should not have passed';
-        assert:((result failureCount + result errorCount) > 0) 
-            message:'Some test should have failed'.
-
-    "Created: / 24-04-2010 / 16:17:47 / cg"
-    "Modified: / 27-04-2010 / 09:46:27 / cg"
-!
-
-runSuiteExpectingSuccess:aTestSuite 
-    |result|
-
-    result := self runSuite:aTestSuite.
-    result errorCount > 0 ifTrue:[self halt].
-
-    self
-        assert:result runCount > 0;
-        assert:(result passedCount > 0) message:'All tests should have passed';
-        assert:(result failureCount = 0) message:'No test should have failed';
-        assert:(result errorCount = 0) message:'No test should have errors'.
-
-    "Modified: / 27-04-2010 / 09:46:40 / cg"
-!
-
-withCode:newSource installedAs:selector inClass:aClass do:aBlock
-    |oldMethod newMethod|
-
-    oldMethod := aClass compiledMethodAt:selector.
-    newMethod := Compiler compile:newSource forClass:aClass install:false.
-
-    [
-        "/ install new method
-        aClass basicAddSelector:selector withMethod:newMethod.
-        aBlock value:newMethod
-    ] ensure:[
-        "/ restore original method
-        aClass basicAddSelector:selector withMethod:oldMethod.
-    ].
-
-    "Created: / 24-04-2010 / 16:26:00 / cg"
-! !
-
-!TestTester methodsFor:'user actions'!
-
-selectedTestCaseClassesChanged
-    selectedTestCaseClass := selectedTestCaseClasses value firstIfEmpty:nil.
-
-    "Created: / 25-04-2010 / 16:25:18 / cg"
-!
-
-selectedTesteeClassesChanged
-    |methodGenerator|
-
-    methodGenerator := 
-        Iterator 
-            on:[:whatToDo |
-                |methodClass|
-
-                methodClass := self selectedTesteeClasses value first.
-                methodClass methodDictionary
-                    keysAndValuesDo:[:methodSelector :method |
-                        whatToDo
-                            value:methodClass
-                            value:method category
-                            value:methodSelector
-                            value:method.
-                    ].
-            ].
-
-    self testeeMethodListHolder value:methodGenerator
-
-    "Modified: / 25-04-2010 / 15:48:04 / cg"
-!
-
-selectedTesteeMethodsChanged
-    |methods method source|
-
-    methods := self selectedTesteeMethods value.
-    methods notEmpty ifTrue:[
-        method := methods first.
-        source := method source.
-    ].
-    selectedTesteeMethod ~~ method ifTrue:[
-        (self originalMethodSourceHolder value) ~= source ifTrue:[
-            selectedTesteeMethod := method.
-"/ self halt.
-            self originalMethodSourceHolder value:source.
-            self mutatedMethodSourceHolder value:nil.
-
-            self updateDiffTextView.
-        ].
-    ].
-
-    "Created: / 25-04-2010 / 15:51:03 / cg"
-    "Modified: / 27-04-2010 / 09:54:19 / cg"
-!
-
-updateDiffTextView
-    diffTextView 
-        text1:(self originalMethodSourceHolder value ? '')
-        text2:(self mutatedMethodSourceHolder value ? '').
-    self windowGroup repairDamage.
-
-    "Created: / 26-04-2010 / 10:38:39 / cg"
-    "Modified: / 26-04-2010 / 12:19:26 / cg"
-! !
-
-!TestTester::Mutator class methodsFor:'instance creation'!
-
-forBlock:aBlock
-    ^ self new blockToCall:aBlock
-
-    "Created: / 24-04-2010 / 16:55:24 / cg"
-! !
-
-!TestTester::Mutator methodsFor:'accessing'!
-
-blockToCall:something
-    blockToCall := something.
-! !
-
-!TestTester::Mutator methodsFor:'mutating'!
-
-mutationsOf:aTree do:aBlock
-    blockToCall := aBlock.
-    treeTop := aTree.
-    aTree acceptVisitor:self.
-
-    "Created: / 24-04-2010 / 17:12:19 / cg"
-    "Modified: / 24-04-2010 / 19:02:24 / cg"
-! !
-
-!TestTester::Mutator methodsFor:'visiting'!
-
-acceptAssignmentNode:anAssignmentNode
-    |oldExpr|
-
-    oldExpr := anAssignmentNode value.
-    [
-        (self class new) mutationsOf:oldExpr do:[:newExpr |
-            anAssignmentNode value:newExpr.
-            blockToCall value:treeTop.
-        ].
-    ] ensure:[
-        anAssignmentNode value:oldExpr
-    ].
-
-    "Created: / 27-04-2010 / 00:32:14 / cg"
-!
-
-acceptBlockNode:aBlockNode
-    self acceptMethodOrBlockNode:aBlockNode
-
-    "Modified: / 24-04-2010 / 19:06:49 / cg"
-!
-
-acceptLiteralNode:aLiteralNode
-    |oldValue|
-
-    oldValue := aLiteralNode value.
-    oldValue isInteger ifTrue:[
-        [
-            Transcript showCR:('Replacing value %1 with: %2' bindWith:oldValue with:oldValue+1).
-            aLiteralNode token value:oldValue + 1.
-            blockToCall value:treeTop.
-            Transcript showCR:('Replacing value %1 with: %2' bindWith:oldValue with:oldValue-1).
-            aLiteralNode token value:oldValue - 1.
-            blockToCall value:treeTop.
-            ((oldValue ~= 1) and:[oldValue ~= -1 and:[oldValue ~= 0]]) ifTrue:[
-                Transcript showCR:('Replacing value %1 with: %2' bindWith:oldValue with:0).
-                aLiteralNode token value:0.
-                blockToCall value:treeTop.                
-            ].
-        ] ensure:[
-            aLiteralNode token value:oldValue.
-        ].
-        ^ self.
-    ].
-    oldValue isFloat ifTrue:[
-        self halt.
-        ^ self.
-    ].
-    oldValue isSymbol ifTrue:[
-        ^ self.
-    ].
-    oldValue isString ifTrue:[
-        ^ self.
-    ].
-    oldValue isArray ifTrue:[
-        ^ self.
-    ].
-    oldValue isByteArray ifTrue:[
-        self halt.
-        ^ self.
-    ].
-self halt.
-
-    "Created: / 25-04-2010 / 21:32:12 / cg"
-    "Modified: / 27-04-2010 / 09:45:18 / cg"
-!
-
-acceptMessageNode:aMessageNode
-    |selector arguments|
-
-    selector := aMessageNode selector.
-
-    ( #( ifTrue: ifFalse: ifTrue:ifFalse: ifFalse:ifTrue:) includes:selector) ifTrue:[
-        self tryWithNegatedCondition:aMessageNode.
-    ].
-
-    arguments := aMessageNode arguments.
-    1 to:arguments size do:[:idx |
-        |oldArg|
-
-        oldArg := arguments at:idx.
-        [
-            (self class new) mutationsOf:oldArg do:[:newArg |
-                arguments at:idx put:newArg.
-                blockToCall value:treeTop.
-            ].
-        ] ensure:[
-            arguments at:idx put:oldArg
-        ].
-    ].
-
-    "Modified: / 24-04-2010 / 19:07:22 / cg"
-!
-
-acceptMethodNode:aMethodNode
-    self acceptMethodOrBlockNode:aMethodNode
-
-    "Modified: / 24-04-2010 / 19:06:44 / cg"
-!
-
-acceptMethodOrBlockNode:aMethodOrBlockNode
-    |oldBody|
-
-    oldBody := aMethodOrBlockNode body.
-    oldBody notNil ifTrue:[
-        [
-            (self class new) mutationsOf:oldBody do:[:newBody |
-                aMethodOrBlockNode body:newBody.
-                blockToCall value:treeTop.
-            ].
-        ] ensure:[
-            aMethodOrBlockNode body:oldBody
-        ].
-    ].
-
-    "Created: / 24-04-2010 / 19:06:33 / cg"
-!
-
-acceptReturnNode:aReturnNode
-    |oldExpr|
-
-    oldExpr := aReturnNode value.
-    [
-        (self class new) mutationsOf:oldExpr do:[:newExpr |
-            aReturnNode value:newExpr.
-            blockToCall value:treeTop.
-        ].
-    ] ensure:[
-        aReturnNode value:oldExpr
-    ].
-
-    "Modified: / 25-04-2010 / 21:30:13 / cg"
-!
-
-acceptSequenceNode:aSequenceNode
-    |statements|
-
-    statements := aSequenceNode statements.
-
-    1 to:statements size do:[:idx |
-        |oldStat|
-
-        oldStat := statements at:idx.
-        [
-            (self class new) mutationsOf:oldStat do:[:newStat |
-                statements at:idx put:newStat.
-                blockToCall value:treeTop.
-            ].
-        ] ensure:[
-            statements at:idx put:oldStat
-        ].
-    ].
-"/    |oldBody|
-"/
-"/    oldBody := aMethodNode body.
-"/    oldBody notNil ifTrue:[
-"/        [
-"/            (self class new) mutationsOf:oldBody do:[:newBody |
-"/self halt.
-"/            ].
-"/        ] ensure:[
-"/            aMethodNode body:oldBody
-"/        ].
-"/    ].
-"/
-"/    "Created: / 24-04-2010 / 16:56:12 / cg"
-"/
-
-    "Created: / 24-04-2010 / 18:23:35 / cg"
-!
-
-acceptVariableNode:aVariableNode
-
-    "Created: / 25-04-2010 / 21:35:26 / cg"
-!
-
-tryWithNegatedCondition:aMessageNode
-    |sel repl|
-
-    sel := aMessageNode selector.
-    repl := (Dictionary new 
-                at: #ifTrue: put: #ifFalse: ;
-                at: #ifFalse: put: #ifTrue: ;
-                at: #ifTrue:ifFalse: put: #ifFalse:ifTrue: ;
-                at: #ifFalse:ifTrue: put: #ifTrue:ifFalse: ;
-                yourself)
-                    at:sel.
-
-    [
-        aMessageNode selector:repl.
-        blockToCall value:treeTop.
-    ] ensure:[
-        aMessageNode selector:sel.
-    ].
-
-    "Modified: / 24-04-2010 / 19:03:44 / cg"
-! !
-
-!TestTester class methodsFor:'documentation'!
-
-version_CVS
-    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestTester.st,v 1.4 2010-04-27 08:48:09 cg Exp $'
-! !
--- a/abbrev.stc	Wed Aug 31 17:38:43 2016 +0100
+++ b/abbrev.stc	Sat Sep 03 09:08:25 2016 +0100
@@ -7,12 +7,9 @@
 TestAsserter TestAsserter stx:goodies/sunit 'SUnit-Base' 0
 TestFailure TestFailure stx:goodies/sunit 'SUnit-Preload' 1
 TestResult TestResult stx:goodies/sunit 'SUnit-Base' 0
-TestResultReporter TestResultReporter stx:goodies/sunit 'SUnit-Report' 0
+TestResultReporter TestResultReporter stx:goodies/sunit 'SUnit-Smalltalk/X-Report' 0
 TestRunner TestRunner stx:goodies/sunit 'SUnit-UI' 1
 TestSuite TestSuite stx:goodies/sunit 'SUnit-Base' 0
-TestSuitesCompoundScriptTest TestSuitesCompoundScriptTest stx:goodies/sunit 'SUnit-Tests' 1
-TestSuitesHierarchyScriptTest TestSuitesHierarchyScriptTest stx:goodies/sunit 'SUnit-Tests' 1
-TestSuitesScriptTest TestSuitesScriptTest stx:goodies/sunit 'SUnit-Tests' 1
 TestSuitesScripter TestSuitesScripter stx:goodies/sunit 'SUnit-Base' 0
 stx_goodies_sunit stx_goodies_sunit stx:goodies/sunit '* Projects & Packages *' 3
 ResumableTestFailure ResumableTestFailure stx:goodies/sunit 'SUnit-Preload' 1
@@ -34,10 +31,13 @@
 SimpleTestResourceCircular SimpleTestResourceCircular stx:goodies/sunit 'SUnit-Tests' 2
 SimpleTestResourceCircular1 SimpleTestResourceCircular1 stx:goodies/sunit 'SUnit-Tests' 2
 CircularTestResourceTestCase CircularTestResourceTestCase stx:goodies/sunit 'SUnit-Tests' 1
+TestSuitesHierarchyScriptTest TestSuitesHierarchyScriptTest stx:goodies/sunit 'SUnit-Tests' 1
+TestSuitesCompoundScriptTest TestSuitesCompoundScriptTest stx:goodies/sunit 'SUnit-Tests' 1
+TestSuitesScriptTest TestSuitesScriptTest stx:goodies/sunit 'SUnit-Tests' 1
 TestCaseOutcome TestCaseOutcome stx:goodies/sunit 'SUnit-Base' 0
 TestResultStX TestResultStX stx:goodies/sunit 'SUnit-Smalltalk/X' 0
 TestResultForRunWithDebug TestResultForRunWithDebug stx:goodies/sunit 'SUnit-Smalltalk/X' 0
 SUnitTests2 SUnitTests2 stx:goodies/sunit 'SUnit-Smalltalk/X-Tests' 1
-TestCoverageReporter TestCoverageReporter stx:goodies/sunit 'SUnit-Report' 0
-MetricsReporter MetricsReporter stx:goodies/sunit 'SUnit-Report' 0
+TestCoverageReporter TestCoverageReporter stx:goodies/sunit 'SUnit-Smalltalk/X-Report' 0
+MetricsReporter MetricsReporter stx:goodies/sunit 'SUnit-Smalltalk/X-Report' 0
 TestSkipped TestSkipped stx:goodies/sunit 'SUnit-Preload' 1
--- a/bc.mak	Wed Aug 31 17:38:43 2016 +0100
+++ b/bc.mak	Sat Sep 03 09:08:25 2016 +0100
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/goodies/sunit/bc.mak,v 1.25 2013-04-03 13:27:06 cg Exp $
+# $Header$
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_goodies_sunit.
@@ -30,11 +30,12 @@
 !INCLUDE Make.spec
 
 LIBNAME=libstx_goodies_sunit
-RESFILES=sunit.$(RES)
+MODULE_PATH=goodies\sunit
+RESFILES=stx_goodies_sunitWINrc.$(RES)
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libview2
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libview2
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
@@ -53,7 +54,6 @@
 	pushd ..\..\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\..\libui & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 
 
@@ -61,29 +61,45 @@
 
 
 
+
+test: $(TOP)\goodies\builder\reports\NUL
+	pushd $(TOP)\goodies\builder\reports & $(MAKE_BAT)
+	$(TOP)\goodies\builder\reports\report-runner.bat -D . -r Builder::TestReport -p $(PACKAGE)
+        
 clean::
-	del *.$(CSUFFIX)
+	-del *.$(CSUFFIX)
+
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
-$(OUTDIR)MetricsReporter.$(O) MetricsReporter.$(H): MetricsReporter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)SUnitDelay.$(O) SUnitDelay.$(H): SUnitDelay.st $(INCLUDE_TOP)\stx\libbasic\Delay.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)SUnitNameResolver.$(O) SUnitNameResolver.$(H): SUnitNameResolver.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestAsserter.$(O) TestAsserter.$(H): TestAsserter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestCaseOutcome.$(O) TestCaseOutcome.$(H): TestCaseOutcome.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestCoverageReporter.$(O) TestCoverageReporter.$(H): TestCoverageReporter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestFailure.$(O) TestFailure.$(H): TestFailure.st $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestResult.$(O) TestResult.$(H): TestResult.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestResultReporter.$(O) TestResultReporter.$(H): TestResultReporter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestRunner.$(O) TestRunner.$(H): TestRunner.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestSuite.$(O) TestSuite.$(H): TestSuite.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestSuitesScripter.$(O) TestSuitesScripter.$(H): TestSuitesScripter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)stx_goodies_sunit.$(O) stx_goodies_sunit.$(H): stx_goodies_sunit.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)ResumableTestFailure.$(O) ResumableTestFailure.$(H): ResumableTestFailure.st $(INCLUDE_TOP)\stx\goodies\sunit\TestFailure.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestCase.$(O) TestCase.$(H): TestCase.st $(INCLUDE_TOP)\stx\goodies\sunit\TestAsserter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestResource.$(O) TestResource.$(H): TestResource.st $(INCLUDE_TOP)\stx\goodies\sunit\TestAsserter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestResultStX.$(O) TestResultStX.$(H): TestResultStX.st $(INCLUDE_TOP)\stx\goodies\sunit\TestResult.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestSkipped.$(O) TestSkipped.$(H): TestSkipped.st $(INCLUDE_TOP)\stx\goodies\sunit\TestFailure.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)TestResultForRunWithDebug.$(O) TestResultForRunWithDebug.$(H): TestResultForRunWithDebug.st $(INCLUDE_TOP)\stx\goodies\sunit\TestResultStX.$(H) $(INCLUDE_TOP)\stx\goodies\sunit\TestResult.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\Block.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Symbol.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Class.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(STCHDR)
+$(OUTDIR)MetricsReporter.$(O) MetricsReporter.$(C) MetricsReporter.$(H): MetricsReporter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SUnitDelay.$(O) SUnitDelay.$(C) SUnitDelay.$(H): SUnitDelay.st $(INCLUDE_TOP)\stx\libbasic\Delay.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SUnitNameResolver.$(O) SUnitNameResolver.$(C) SUnitNameResolver.$(H): SUnitNameResolver.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestAsserter.$(O) TestAsserter.$(C) TestAsserter.$(H): TestAsserter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestCaseOutcome.$(O) TestCaseOutcome.$(C) TestCaseOutcome.$(H): TestCaseOutcome.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestCoverageReporter.$(O) TestCoverageReporter.$(C) TestCoverageReporter.$(H): TestCoverageReporter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestFailure.$(O) TestFailure.$(C) TestFailure.$(H): TestFailure.st $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestResult.$(O) TestResult.$(C) TestResult.$(H): TestResult.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestResultReporter.$(O) TestResultReporter.$(C) TestResultReporter.$(H): TestResultReporter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestRunner.$(O) TestRunner.$(C) TestRunner.$(H): TestRunner.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
+$(OUTDIR)TestSuite.$(O) TestSuite.$(C) TestSuite.$(H): TestSuite.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestSuitesScripter.$(O) TestSuitesScripter.$(C) TestSuitesScripter.$(H): TestSuitesScripter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)stx_goodies_sunit.$(O) stx_goodies_sunit.$(C) stx_goodies_sunit.$(H): stx_goodies_sunit.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
+$(OUTDIR)ResumableTestFailure.$(O) ResumableTestFailure.$(C) ResumableTestFailure.$(H): ResumableTestFailure.st $(INCLUDE_TOP)\stx\goodies\sunit\TestFailure.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestCase.$(O) TestCase.$(C) TestCase.$(H): TestCase.st $(INCLUDE_TOP)\stx\goodies\sunit\TestAsserter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestResource.$(O) TestResource.$(C) TestResource.$(H): TestResource.st $(INCLUDE_TOP)\stx\goodies\sunit\TestAsserter.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestResultStX.$(O) TestResultStX.$(C) TestResultStX.$(H): TestResultStX.st $(INCLUDE_TOP)\stx\goodies\sunit\TestResult.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestSkipped.$(O) TestSkipped.$(C) TestSkipped.$(H): TestSkipped.st $(INCLUDE_TOP)\stx\goodies\sunit\TestFailure.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestCaseWithArguments.$(O) TestCaseWithArguments.$(C) TestCaseWithArguments.$(H): TestCaseWithArguments.st $(INCLUDE_TOP)\stx\goodies\sunit\TestAsserter.$(H) $(INCLUDE_TOP)\stx\goodies\sunit\TestCase.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TestResultForRunWithDebug.$(O) TestResultForRunWithDebug.$(C) TestResultForRunWithDebug.$(H): TestResultForRunWithDebug.st $(INCLUDE_TOP)\stx\goodies\sunit\TestResult.$(H) $(INCLUDE_TOP)\stx\goodies\sunit\TestResultStX.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Block.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Class.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic\Symbol.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
+
+# **Must be at end**
+
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+!IFDEF HGROOT
+$(OUTDIR)stx_goodies_sunit.$(O): $(HGROOT)\.hg\dirstate
+!ENDIF
--- a/bmake.bat	Wed Aug 31 17:38:43 2016 +0100
+++ b/bmake.bat	Sat Sep 03 09:08:25 2016 +0100
@@ -3,6 +3,13 @@
 @REM type bmake, and wait...
 @REM do not edit - automatically generated from ProjectDefinition
 @REM -------
-make.exe -N -f bc.mak %*
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+
+make.exe -N -f bc.mak  %DEFINES% %*
 
 
+
+
--- a/extensions.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/extensions.st	Sat Sep 03 09:08:25 2016 +0100
@@ -127,7 +127,7 @@
 
 !stx_goodies_sunit class methodsFor:'documentation'!
 
-extensionsVersion_CVS
-    ^ '$Header: /cvs/stx/stx/goodies/sunit/extensions.st,v 1.17 2014-07-09 16:22:02 cg Exp $'
+extensionsVersion_HG
+
+    ^ '$Changeset: <not expanded> $'
 ! !
-
--- a/libInit.cc	Wed Aug 31 17:38:43 2016 +0100
+++ b/libInit.cc	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * $Header: /cvs/stx/stx/goodies/sunit/libInit.cc,v 1.24 2014-03-23 21:08:48 cg Exp $
+ * $Header$
  *
  * DO NOT EDIT
  * automagically generated from the projectDefinition: stx_goodies_sunit.
@@ -16,38 +16,61 @@
 DLL_EXPORT void _libstx_goodies_sunit_InitDefinition() INIT_TEXT_SECTION;
 #endif
 
-void _libstx_goodies_sunit_InitDefinition(pass, __pRT__, snd)
-OBJ snd; struct __vmData__ *__pRT__; {
-__BEGIN_PACKAGE2__("libstx_goodies_sunit__DFN", _libstx_goodies_sunit_InitDefinition, "stx:goodies/sunit");
-_stx_137goodies_137sunit_Init(pass,__pRT__,snd);
+extern void _MetricsReporter_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _SUnitDelay_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _SUnitNameResolver_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestAsserter_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestCaseOutcome_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestCoverageReporter_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestFailure_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestResult_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestResultReporter_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestRunner_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestSuite_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestSuitesScripter_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _stx_137goodies_137sunit_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _ResumableTestFailure_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestCase_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestResource_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestResultStX_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestSkipped_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestCaseWithArguments_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _TestResultForRunWithDebug_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 
-__END_PACKAGE__();
+extern void _stx_137goodies_137sunit_extensions_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+
+void _libstx_goodies_sunit_InitDefinition(int pass, struct __vmData__ *__pRT__, OBJ snd)
+{
+  __BEGIN_PACKAGE2__("libstx_goodies_sunit__DFN", _libstx_goodies_sunit_InitDefinition, "stx:goodies/sunit");
+    _stx_137goodies_137sunit_Init(pass,__pRT__,snd);
+
+  __END_PACKAGE__();
 }
 
-void _libstx_goodies_sunit_Init(pass, __pRT__, snd)
-OBJ snd; struct __vmData__ *__pRT__; {
-__BEGIN_PACKAGE2__("libstx_goodies_sunit", _libstx_goodies_sunit_Init, "stx:goodies/sunit");
-_MetricsReporter_Init(pass,__pRT__,snd);
-_SUnitDelay_Init(pass,__pRT__,snd);
-_SUnitNameResolver_Init(pass,__pRT__,snd);
-_TestAsserter_Init(pass,__pRT__,snd);
-_TestCaseOutcome_Init(pass,__pRT__,snd);
-_TestCoverageReporter_Init(pass,__pRT__,snd);
-_TestFailure_Init(pass,__pRT__,snd);
-_TestResult_Init(pass,__pRT__,snd);
-_TestResultReporter_Init(pass,__pRT__,snd);
-_TestRunner_Init(pass,__pRT__,snd);
-_TestSuite_Init(pass,__pRT__,snd);
-_TestSuitesScripter_Init(pass,__pRT__,snd);
-_stx_137goodies_137sunit_Init(pass,__pRT__,snd);
-_ResumableTestFailure_Init(pass,__pRT__,snd);
-_TestCase_Init(pass,__pRT__,snd);
-_TestCaseWithArguments_Init(pass,__pRT__,snd);
-_TestResource_Init(pass,__pRT__,snd);
-_TestResultStX_Init(pass,__pRT__,snd);
-_TestSkipped_Init(pass,__pRT__,snd);
-_TestResultForRunWithDebug_Init(pass,__pRT__,snd);
+void _libstx_goodies_sunit_Init(int pass, struct __vmData__ *__pRT__, OBJ snd)
+{
+  __BEGIN_PACKAGE2__("libstx_goodies_sunit", _libstx_goodies_sunit_Init, "stx:goodies/sunit");
+    _MetricsReporter_Init(pass,__pRT__,snd);
+    _SUnitDelay_Init(pass,__pRT__,snd);
+    _SUnitNameResolver_Init(pass,__pRT__,snd);
+    _TestAsserter_Init(pass,__pRT__,snd);
+    _TestCaseOutcome_Init(pass,__pRT__,snd);
+    _TestCoverageReporter_Init(pass,__pRT__,snd);
+    _TestFailure_Init(pass,__pRT__,snd);
+    _TestResult_Init(pass,__pRT__,snd);
+    _TestResultReporter_Init(pass,__pRT__,snd);
+    _TestRunner_Init(pass,__pRT__,snd);
+    _TestSuite_Init(pass,__pRT__,snd);
+    _TestSuitesScripter_Init(pass,__pRT__,snd);
+    _stx_137goodies_137sunit_Init(pass,__pRT__,snd);
+    _ResumableTestFailure_Init(pass,__pRT__,snd);
+    _TestCase_Init(pass,__pRT__,snd);
+    _TestResource_Init(pass,__pRT__,snd);
+    _TestResultStX_Init(pass,__pRT__,snd);
+    _TestSkipped_Init(pass,__pRT__,snd);
+    _TestCaseWithArguments_Init(pass,__pRT__,snd);
+    _TestResultForRunWithDebug_Init(pass,__pRT__,snd);
 
-_stx_137goodies_137sunit_extensions_Init(pass,__pRT__,snd);
-__END_PACKAGE__();
+    _stx_137goodies_137sunit_extensions_Init(pass,__pRT__,snd);
+  __END_PACKAGE__();
 }
--- a/mingwmake.bat	Wed Aug 31 17:38:43 2016 +0100
+++ b/mingwmake.bat	Sat Sep 03 09:08:25 2016 +0100
@@ -3,10 +3,16 @@
 @REM type mingwmake, and wait...
 @REM do not edit - automatically generated from ProjectDefinition
 @REM -------
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
 
 @pushd ..\..\rules
 @call find_mingw.bat
 @popd
-make.exe -N -f bc.mak %USEMINGW_ARG% %*
+make.exe -N -f bc.mak %DEFINES% %USEMINGW_ARG% %*
 
 
+
+
--- a/stx_goodies_sunit.st	Wed Aug 31 17:38:43 2016 +0100
+++ b/stx_goodies_sunit.st	Sat Sep 03 09:08:25 2016 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "{ Package: 'stx:goodies/sunit' }"
 
 "{ NameSpace: Smalltalk }"
@@ -84,9 +82,6 @@
         TestResultReporter
         TestRunner
         TestSuite
-        (TestSuitesCompoundScriptTest autoload)
-        (TestSuitesHierarchyScriptTest autoload)
-        (TestSuitesScriptTest autoload)
         TestSuitesScripter
         #'stx_goodies_sunit'
         ResumableTestFailure
@@ -108,6 +103,9 @@
         (SimpleTestResourceCircular autoload)
         (SimpleTestResourceCircular1 autoload)
         (CircularTestResourceTestCase autoload)
+        (TestSuitesHierarchyScriptTest autoload)
+        (TestSuitesCompoundScriptTest autoload)
+        (TestSuitesScriptTest autoload)   
         TestCaseOutcome
         TestResultStX
         TestResultForRunWithDebug
@@ -116,6 +114,8 @@
         MetricsReporter
         TestSkipped
     )
+
+    "Modified: / 03-09-2016 / 09:05:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 extensionMethodNames
@@ -187,6 +187,10 @@
     ^ '$Header$'
 !
 
+version_HG
+    ^ '$Changeset: <not expanded> $'
+!
+
 version_SVN
     ^ '$Id$'
 ! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stx_goodies_sunitWINrc.rc	Sat Sep 03 09:08:25 2016 +0100
@@ -0,0 +1,37 @@
+//
+// DO NOT EDIT
+// automagically generated from the projectDefinition: stx_goodies_sunit.
+//
+VS_VERSION_INFO VERSIONINFO
+  FILEVERSION     6,2,32767,32767
+  PRODUCTVERSION  6,2,6,0
+#if (__BORLANDC__)
+  FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
+  FILEFLAGS       VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
+  FILEOS          VOS_NT_WINDOWS32
+  FILETYPE        VFT_DLL
+  FILESUBTYPE     VS_USER_DEFINED
+#endif
+
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    BLOCK "040904E4"
+    BEGIN
+      VALUE "CompanyName", "eXept Software AG\0"
+      VALUE "FileDescription", "Smalltalk/X Unit Testing (LIB)\0"
+      VALUE "FileVersion", "6.2.32767.32767\0"
+      VALUE "InternalName", "stx:goodies/sunit\0"
+      VALUE "LegalCopyright", "Copyright eXept Software AG 2007\0"
+      VALUE "ProductName", "Smalltalk/X\0"
+      VALUE "ProductVersion", "6.2.6.0\0"
+      VALUE "ProductDate", "Sat, 03 Sep 2016 08:05:50 GMT\0"
+    END
+
+  END
+
+  BLOCK "VarFileInfo"
+  BEGIN                               //  Language   |    Translation
+    VALUE "Translation", 0x409, 0x4E4 // U.S. English, Windows Multilingual
+  END
+END
--- a/vcmake.bat	Wed Aug 31 17:38:43 2016 +0100
+++ b/vcmake.bat	Sat Sep 03 09:08:25 2016 +0100
@@ -9,6 +9,14 @@
     call vcsetup.bat
     popd
 )
-make.exe -N -f bc.mak -DUSEVC %*
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
 
 
+make.exe -N -f bc.mak -DUSEVC=1 %DEFINES% %*
+
+
+
+