Index: src/test/OTAppDelegate.m ================================================================== --- src/test/OTAppDelegate.m +++ src/test/OTAppDelegate.m @@ -157,31 +157,33 @@ [OFStdOut setForegroundColor: [OFColor maroon]]; [OFStdOut writeLine: @"]: failed"]; [OFStdOut writeLine: description]; break; } - - [OFStdOut reset]; } - (void)applicationDidFinishLaunching: (OFNotification *)notification { OFSet OF_GENERIC(Class) *testClasses = [self testClasses]; size_t numSucceeded = 0, numFailed = 0; OFMutableDictionary *summaries = [OFMutableDictionary dictionary]; - [OFStdOut writeFormat: @"Running %zu test case(s)\n", - testClasses.count]; + [OFStdOut setForegroundColor: [OFColor purple]]; + [OFStdOut writeString: @"Found "]; + [OFStdOut setForegroundColor: [OFColor fuchsia]]; + [OFStdOut writeFormat: @"%zu", testClasses.count]; + [OFStdOut setForegroundColor: [OFColor purple]]; + [OFStdOut writeFormat: @" test case%s\n", + (testClasses.count != 1 ? "s" : "")]; for (Class class in testClasses) { OFArray *summary; [OFStdOut setForegroundColor: [OFColor teal]]; [OFStdOut writeFormat: @"Running ", class]; [OFStdOut setForegroundColor: [OFColor aqua]]; [OFStdOut writeFormat: @"%@\n", class]; - [OFStdOut reset]; for (OFValue *test in [self testsInClass: class]) { void *pool = objc_autoreleasePoolPush(); bool failed = false; OTTestCase *instance; @@ -262,15 +264,17 @@ } [OFStdOut setForegroundColor: [OFColor fuchsia]]; [OFStdOut writeFormat: @"%zu", numSucceeded]; [OFStdOut setForegroundColor: [OFColor purple]]; - [OFStdOut writeString: @" test(s) succeeded, "]; + [OFStdOut writeFormat: @" test%s succeeded, ", + (numSucceeded != 1 ? "s" : "")]; [OFStdOut setForegroundColor: [OFColor fuchsia]]; [OFStdOut writeFormat: @"%zu", numFailed]; [OFStdOut setForegroundColor: [OFColor purple]]; - [OFStdOut writeLine: @" test(s) failed."]; + [OFStdOut writeFormat: @" test%s failed\n", + (numFailed != 1 ? "s" : "")]; [OFStdOut reset]; [OFApplication terminateWithStatus: (int)numFailed]; } @end