4
4
5
5
#if os(Linux) || os(FreeBSD)
6
6
import XCTest
7
+ import Foundation
7
8
#else
8
9
import SwiftXCTest
10
+ import SwiftFoundation
9
11
#endif
10
12
11
13
class Observer : XCTestObservation {
14
+ var startedBundlePaths = [ String] ( )
12
15
var startedTestCaseNames = [ String] ( )
13
16
var failureDescriptions = [ String] ( )
14
17
var finishedTestCaseNames = [ String] ( )
18
+ var finishedBundlePaths = [ String] ( )
19
+
20
+ func testBundleWillStart( testBundle: NSBundle ) {
21
+ startedBundlePaths. append ( testBundle. bundlePath)
22
+ }
15
23
16
24
func testCaseWillStart( testCase: XCTestCase ) {
17
25
startedTestCaseNames. append ( testCase. name)
@@ -24,9 +32,14 @@ class Observer: XCTestObservation {
24
32
func testCaseDidFinish( testCase: XCTestCase ) {
25
33
finishedTestCaseNames. append ( testCase. name)
26
34
}
35
+
36
+ func testBundleDidFinish( testBundle: NSBundle ) {
37
+ print ( " In \( #function) " )
38
+ }
27
39
}
28
40
29
41
let observer = Observer ( )
42
+ XCTestObservationCenter . sharedTestObservationCenter ( ) . addTestObserver ( observer)
30
43
31
44
class Observation : XCTestCase {
32
45
static var allTests : [ ( String , Observation -> ( ) throws -> Void ) ] {
@@ -38,37 +51,44 @@ class Observation: XCTestCase {
38
51
}
39
52
40
53
// CHECK: Test Case 'Observation.test_one' started.
41
- // CHECK: Test Case 'Observation.test_one' passed \(\d+\.\d+ seconds\).
54
+ // CHECK: .*/Observation/main.swift:\d+: error: Observation.test_one : failed - fail!
55
+ // CHECK: Test Case 'Observation.test_one' failed \(\d+\.\d+ seconds\).
42
56
func test_one( ) {
43
- XCTAssertEqual ( observer. startedTestCaseNames, [ ] )
57
+ XCTAssertEqual ( observer. startedBundlePaths. count, 1 )
58
+ XCTAssertEqual ( observer. startedTestCaseNames, [ " Observation.test_one " ] )
44
59
XCTAssertEqual ( observer. failureDescriptions, [ ] )
45
60
XCTAssertEqual ( observer. finishedTestCaseNames, [ ] )
61
+ XCTAssertEqual ( observer. finishedBundlePaths. count, 0 )
46
62
47
- XCTestObservationCenter . sharedTestObservationCenter ( ) . addTestObserver ( observer)
63
+ XCTFail ( " fail! " )
64
+ XCTAssertEqual ( observer. failureDescriptions, [ " failed - fail! " ] )
48
65
}
49
66
50
67
// CHECK: Test Case 'Observation.test_two' started.
51
- // CHECK: .*/Observation/main.swift:\d+: error: Observation.test_two : failed - fail!
52
- // CHECK: Test Case 'Observation.test_two' failed \(\d+\.\d+ seconds\).
68
+ // CHECK: Test Case 'Observation.test_two' passed \(\d+\.\d+ seconds\).
53
69
func test_two( ) {
54
- XCTAssertEqual ( observer. startedTestCaseNames, [ " Observation.test_two " ] )
70
+ XCTAssertEqual ( observer. startedBundlePaths. count, 1 )
71
+ XCTAssertEqual ( observer. startedTestCaseNames, [ " Observation.test_one " , " Observation.test_two " ] )
55
72
XCTAssertEqual ( observer. finishedTestCaseNames, [ " Observation.test_one " ] )
56
-
57
- XCTFail ( " fail! " )
58
- XCTAssertEqual ( observer. failureDescriptions, [ " failed - fail! " ] )
73
+ XCTAssertEqual ( observer. finishedBundlePaths. count, 0 )
59
74
60
75
XCTestObservationCenter . sharedTestObservationCenter ( ) . removeTestObserver ( observer)
61
76
}
62
77
63
78
// CHECK: Test Case 'Observation.test_three' started.
64
79
// CHECK: Test Case 'Observation.test_three' passed \(\d+\.\d+ seconds\).
65
80
func test_three( ) {
66
- XCTAssertEqual ( observer. startedTestCaseNames, [ " Observation.test_two " ] )
81
+ XCTAssertEqual ( observer. startedBundlePaths. count, 1 )
82
+ XCTAssertEqual ( observer. startedTestCaseNames, [ " Observation.test_one " , " Observation.test_two " ] )
67
83
XCTAssertEqual ( observer. finishedTestCaseNames, [ " Observation.test_one " ] )
84
+ XCTAssertEqual ( observer. finishedBundlePaths. count, 0 )
85
+
86
+ XCTestObservationCenter . sharedTestObservationCenter ( ) . addTestObserver ( observer)
68
87
}
69
88
}
70
89
71
90
XCTMain ( [ testCase ( Observation . allTests) ] )
72
91
73
92
// CHECK: Executed 3 tests, with 1 failure \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds
74
93
// CHECK: Total executed 3 tests, with 1 failure \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds
94
+ // CHECK: In testBundleDidFinish
0 commit comments