@@ -32,8 +32,18 @@ extension XCTestCase {
32
32
var totalFailures = 0
33
33
var unexpectedFailures = 0
34
34
for (name, test) in tests {
35
- XCTCurrentTestCase = self
36
35
let method = " \( self . dynamicType) . \( name) "
36
+
37
+ var failures = [ XCTFailure] ( )
38
+ XCTFailureHandler = { failure in
39
+ if !self . continueAfterFailure {
40
+ failure. emit ( method)
41
+ fatalError ( " Terminating execution due to test failure " )
42
+ } else {
43
+ failures. append ( failure)
44
+ }
45
+ }
46
+
37
47
var duration : Double = 0.0
38
48
print ( " Test Case ' \( method) ' started. " )
39
49
@@ -47,21 +57,20 @@ extension XCTestCase {
47
57
48
58
duration = end - start
49
59
totalDuration += duration
50
- for failure in XCTCurrentFailures {
60
+ for failure in failures {
51
61
failure. emit ( method)
52
62
totalFailures += 1
53
63
if !failure. expected {
54
64
unexpectedFailures += 1
55
65
}
56
66
}
57
67
var result = " passed "
58
- if XCTCurrentFailures . count > 0 {
68
+ if failures . count > 0 {
59
69
result = " failed "
60
70
}
61
71
print ( " Test Case ' \( method) ' \( result) ( \( printableStringForTimeInterval ( duration) ) seconds). " )
62
- XCTAllRuns . append ( XCTRun ( duration: duration, method: method, passed: XCTCurrentFailures . count == 0 , failures: XCTCurrentFailures) )
63
- XCTCurrentFailures . removeAll ( )
64
- XCTCurrentTestCase = nil
72
+ XCTAllRuns . append ( XCTRun ( duration: duration, method: method, passed: failures. count == 0 , failures: failures) )
73
+ XCTFailureHandler = nil
65
74
}
66
75
var testCountSuffix = " s "
67
76
if tests. count == 1 {
@@ -75,16 +84,7 @@ extension XCTestCase {
75
84
76
85
print ( " Executed \( tests. count) test \( testCountSuffix) , with \( totalFailures) failure \( failureSuffix) ( \( unexpectedFailures) unexpected) in \( printableStringForTimeInterval ( averageDuration) ) ( \( printableStringForTimeInterval ( totalDuration) ) ) seconds " )
77
86
}
78
-
79
- // This function is for the use of XCTestCase only, but we must make it public or clients will get a link failure when using XCTest (23476006)
80
- public func testFailure( message: String , expected: Bool , file: StaticString , line: UInt ) {
81
- if !continueAfterFailure {
82
- assert ( false , message, file: file, line: line)
83
- } else {
84
- XCTCurrentFailures . append ( XCTFailure ( message: message, expected: expected, file: file, line: line) )
85
- }
86
- }
87
-
87
+
88
88
public func setUp( ) {
89
89
90
90
}
0 commit comments