blob: cc0b047264f2f03809b7dde39e67bfe5619ea94f [file] [log] [blame]
// RUN: %target-run-simple-swift 2>&1 | %FileCheck %s
// REQUIRES: executable_test
// REQUIRES: objc_interop
// FIXME: this test is failing for watchos <rdar://problem/29997073>
// UNSUPPORTED: OS=watchos
import StdlibUnittest
import ObjectiveC
import Foundation
// Don't actually exit with a non-zero status, just say we're going to do it.
_setTestSuiteFailedCallback() { print("abort()") }
func raiseNSException() {
NSException(name: NSExceptionName(rawValue: "Trogdor"), reason: "Burnination", userInfo: nil).raise()
}
var TestSuiteCrashes = TestSuite("NSExceptionCrashes")
TestSuiteCrashes.test("uncaught") {
print("uncaught")
raiseNSException()
}
// CHECK-LABEL: stdout>>> uncaught
// CHECK: stderr>>> *** [StdlibUnittest] Terminating due to uncaught exception Trogdor: Burnination
// CHECK: stderr>>> CRASHED: SIG
// CHECK: the test crashed unexpectedly
// CHECK: [ FAIL ] NSExceptionCrashes.uncaught
TestSuiteCrashes.test("crashesAsExpected") {
print("crashesAsExpected")
expectCrashLater()
raiseNSException()
}
// CHECK-LABEL: stdout>>> crashesAsExpected
// CHECK: stderr>>> *** [StdlibUnittest] Terminating due to uncaught exception Trogdor: Burnination
// CHECK: stderr>>> OK: saw expected "crashed: sig
// CHECK: [ OK ] NSExceptionCrashes.crashesAsExpected
TestSuiteCrashes.test("crashesWithMessage")
.crashOutputMatches("libUnittest]")
.crashOutputMatches("Trogdor")
.crashOutputMatches("Burnination").code {
print("crashesWithMessage")
expectCrashLater()
raiseNSException()
}
// CHECK-LABEL: stdout>>> crashesWithMessage
// CHECK: stderr>>> *** [StdlibUnittest] Terminating due to uncaught exception Trogdor: Burnination
// CHECK: stderr>>> OK: saw expected "crashed: sig
// CHECK: [ OK ] NSExceptionCrashes.crashesWithMessage
TestSuiteCrashes.test("nonNSException")
.crashOutputMatches("countryside").code {
print("nonNSException")
expectCrashLater()
objc_exception_throw("countryside")
}
// CHECK-LABEL: stdout>>> nonNSException
// CHECK: stderr>>> *** [StdlibUnittest] Terminating due to uncaught exception: countryside
// CHECK: stderr>>> OK: saw expected "crashed: sig
// CHECK: [ OK ] NSExceptionCrashes.nonNSException
// CHECK: NSExceptionCrashes: Some tests failed, aborting
// CHECK: abort()
runAllTests()