diff --git a/stdlib/private/StdlibUnittest/StdlibUnittest.swift.gyb b/stdlib/private/StdlibUnittest/StdlibUnittest.swift.gyb index a0e042609ea9f..71ca75694042b 100644 --- a/stdlib/private/StdlibUnittest/StdlibUnittest.swift.gyb +++ b/stdlib/private/StdlibUnittest/StdlibUnittest.swift.gyb @@ -1124,6 +1124,9 @@ func _getRunningOSVersion() -> OSVersion { public enum TestRunPredicate : CustomStringConvertible { case Custom(() -> Bool, reason: String) + case Always(/*reason:*/ String) + case Never + case OSXAny(/*reason:*/ String) case OSXMajor(Int, reason: String) case OSXMinor(Int, Int, reason: String) @@ -1166,6 +1169,12 @@ public enum TestRunPredicate : CustomStringConvertible { switch self { case Custom(_, let reason): return "Custom(reason: \(reason))" + + case Always(let reason): + return "Always(reason: \(reason))" + case Never: + return "" + case OSXAny(let reason): return "OSX(*, reason: \(reason))" case OSXMajor(let major, let reason): @@ -1240,6 +1249,11 @@ public enum TestRunPredicate : CustomStringConvertible { case Custom(let predicate, _): return predicate() + case Always: + return true + case Never: + return false + case OSXAny: switch _getRunningOSVersion() { case .OSX: diff --git a/validation-test/stdlib/StdlibUnittest.swift b/validation-test/stdlib/StdlibUnittest.swift index 53f5311581188..51458f92d361c 100644 --- a/validation-test/stdlib/StdlibUnittest.swift +++ b/validation-test/stdlib/StdlibUnittest.swift @@ -70,6 +70,18 @@ XFailsAndSkips.test("fails") { expectEqual(1, 2) } +// CHECK: [ XFAIL ] XFailsAndSkips.fails-always{{$}} +XFailsAndSkips.test("fails-always") + .xfail(.Always("must always fail")).code { + expectEqual(1, 2) +} + +// CHECK: [ OK ] XFailsAndSkips.fails-never{{$}} +XFailsAndSkips.test("fails-never") + .xfail(.Never).code { + expectEqual(1, 1) +} + // CHECK: [ XFAIL ] XFailsAndSkips.xfail 10.9.3 passes{{$}} XFailsAndSkips.test("xfail 10.9.3 passes") .xfail(.OSXBugFix(10, 9, 3, reason: "")).code { @@ -82,6 +94,18 @@ XFailsAndSkips.test("xfail 10.9.3 fails") expectEqual(1, 2) } +// CHECK: [ SKIP ] XFailsAndSkips.skipAlways (skip: [Always(reason: skip)]){{$}} +XFailsAndSkips.test("skipAlways") + .skip(.Always("skip")).code { + fatalError("should not happen") +} + +// CHECK: [ OK ] XFailsAndSkips.skipNever{{$}} +XFailsAndSkips.test("skipNever") + .skip(.Never).code { + expectEqual(1, 1) +} + // CHECK: [ FAIL ] XFailsAndSkips.skip 10.9.2 passes{{$}} XFailsAndSkips.test("skip 10.9.2 passes") .skip(.OSXBugFix(10, 9, 2, reason: "")).code {