Index: Source/Cobra.Lang/CobraCore.cobra
===================================================================
--- Source/Cobra.Lang/CobraCore.cobra	(revision 2286)
+++ Source/Cobra.Lang/CobraCore.cobra	(working copy)
@@ -138,17 +138,18 @@
 				Run all Cobra `test` sections in all assemblies using reflection to locate them.
 				"""
 				# start = DateTime.now
-				_runAllTests(Assembly.getEntryAssembly, Dictionary<of String, String>())
+				if not _runAllTests(Assembly.getEntryAssembly, Dictionary<of String, String>())
+					CobraCore.exit(3)
 				# duration = DateTime.now.subtract(start)
 				# trace duration
 
-			def _runAllTests(ass as Assembly, found as Dictionary<of String, String>)  # CC: found should be Set<of String>
+			def _runAllTests(ass as Assembly, found as Dictionary<of String, String>) as bool  # CC: found should be Set<of String>
 				name = ass.getName.toString
 				if found.containsKey(name)
-					return
+					return true
 				found.add(name, name)
 				if _skipAssemblyNameForTesting(name)  # saves some time
-					return
+					return true
 
 				# print 'Testing assembly:', ass
 				for type in ass.getExportedTypes
@@ -161,13 +162,18 @@
 							# potential solution 1: move type test out of the type into a "sister" type: private __FooTest
 							# potential solution 2: require a constructed type in Cobra: `test Foo<of int> ...` and then put that in a method attribute in the gen C# and use that type
 							continue
-						method.invoke(type, nil)
-
+						try
+							method.invoke(type, nil)
+						catch exc as Exception
+							print '** Test Failure: Exception in Test clause'
+							print exc.innerException
+							result = false
 				# traverse further assemblies
 				for assName in ass.getReferencedAssemblies
 					subAss = Assembly.load(assName)
-					_runAllTests(subAss to !, found)
-
+					result = _runAllTests(subAss to !, found) and result
+				return result
+				
 			var _skipPrefixes = @['System.', 'Mono.', 'mscorlib,', 'System,']
 
 			def _skipAssemblyNameForTesting(name as String) as bool
@@ -176,7 +182,6 @@
 						return true
 				return false
 
-
 			## Detailed stack trace
 
 			pro maxStackFrames as int

