| 12345678910111213141516171819202122232425262728293031323334353637 | Smalltalk createPackage: 'NodeTestRunner'!Object subclass: #NodeTestRunner	instanceVariableNames: ''	package: 'NodeTestRunner'!!NodeTestRunner class methodsFor: 'not yet classified'!main	self runTestSuite!runTestSuite	| suite worker |	suite := OrderedCollection new.    (TestCase allSubclasses select: [ :each | each isAbstract not ])	do: [ :each | suite addAll: each buildSuite ].	worker := TestSuiteRunner on: suite.	worker announcer on: ResultAnnouncement do:	[ :ann | | result |    	result := ann result.        result runs = result total ifTrue: [	        console log: result runs asString, ' tests run, ', result failures size asString, ' failures, ', result errors size asString, ' errors.'.            result failures isEmpty ifFalse: [                result failures first runCase.                "the line above should throw, normally, but just in case I leave the line below"                self throw: result failures first class name, ' >> ', result failures first selector, ' is failing!!' ].            result errors isEmpty ifFalse: [                result errors first runCase.                "the line above should throw, normally, but just in case I leave the line below"                self throw: result errors first class name, ' >> ', result errors first selector, ' has errors!!' ].    ]].    worker run! !
 |