@@ -26,42 +26,61 @@ final class SerializedDiagnosticsTests: XCTestCase {
26
26
let one = serializedDiags. diagnostics [ 5 ]
27
27
XCTAssertEqual ( one. text, " expected ',' separator " )
28
28
XCTAssertEqual ( one. level, . error)
29
- XCTAssertTrue ( one. location. filename. hasSuffix ( " /StoreSearchCoordinator.swift " ) )
30
- XCTAssertEqual ( one. location. line, 21 )
31
- XCTAssertEqual ( one. location. column, 69 )
32
- XCTAssertEqual ( one. location. offset, 0 )
29
+ XCTAssertEqual ( one. location? . filename. hasSuffix ( " /StoreSearchCoordinator.swift " ) , true )
30
+ XCTAssertEqual ( one. location? . line, 21 )
31
+ XCTAssertEqual ( one. location? . column, 69 )
32
+ XCTAssertEqual ( one. location? . offset, 0 )
33
33
XCTAssertNil ( one. category)
34
34
XCTAssertNil ( one. flag)
35
35
XCTAssertEqual ( one. ranges. count, 0 )
36
36
XCTAssertEqual ( one. fixIts. count, 1 )
37
37
XCTAssertEqual ( one. fixIts [ 0 ] . text, " , " )
38
38
XCTAssertEqual ( one. fixIts [ 0 ] . start, one. fixIts [ 0 ] . end)
39
- XCTAssertTrue ( one. fixIts [ 0 ] . start. filename. hasSuffix ( " /StoreSearchCoordinator.swift " ) )
39
+ XCTAssertEqual ( one. fixIts [ 0 ] . start. filename. hasSuffix ( " /StoreSearchCoordinator.swift " ) , true )
40
40
XCTAssertEqual ( one. fixIts [ 0 ] . start. line, 21 )
41
41
XCTAssertEqual ( one. fixIts [ 0 ] . start. column, 69 )
42
42
XCTAssertEqual ( one. fixIts [ 0 ] . start. offset, 0 )
43
43
44
44
let two = serializedDiags. diagnostics [ 16 ]
45
45
XCTAssertEqual ( two. text, " use of unresolved identifier 'DispatchQueue' " )
46
46
XCTAssertEqual ( two. level, . error)
47
- XCTAssertTrue ( two. location. filename. hasSuffix ( " /Observable.swift " ) )
48
- XCTAssertEqual ( two. location. line, 34 )
49
- XCTAssertEqual ( two. location. column, 13 )
50
- XCTAssertEqual ( two. location. offset, 0 )
47
+ XCTAssertEqual ( two. location? . filename. hasSuffix ( " /Observable.swift " ) , true )
48
+ XCTAssertEqual ( two. location? . line, 34 )
49
+ XCTAssertEqual ( two. location? . column, 13 )
50
+ XCTAssertEqual ( two. location? . offset, 0 )
51
51
XCTAssertNil ( two. category)
52
52
XCTAssertNil ( two. flag)
53
53
XCTAssertEqual ( two. ranges. count, 1 )
54
- XCTAssertTrue ( two. ranges [ 0 ] . 0 . filename. hasSuffix ( " /Observable.swift " ) )
54
+ XCTAssertEqual ( two. ranges [ 0 ] . 0 . filename. hasSuffix ( " /Observable.swift " ) , true )
55
55
XCTAssertEqual ( two. ranges [ 0 ] . 0 . line, 34 )
56
56
XCTAssertEqual ( two. ranges [ 0 ] . 0 . column, 13 )
57
57
XCTAssertEqual ( two. ranges [ 0 ] . 0 . offset, 0 )
58
- XCTAssertTrue ( two. ranges [ 0 ] . 1 . filename. hasSuffix ( " /Observable.swift " ) )
58
+ XCTAssertEqual ( two. ranges [ 0 ] . 1 . filename. hasSuffix ( " /Observable.swift " ) , true )
59
59
XCTAssertEqual ( two. ranges [ 0 ] . 1 . line, 34 )
60
60
XCTAssertEqual ( two. ranges [ 0 ] . 1 . column, 26 )
61
61
XCTAssertEqual ( two. ranges [ 0 ] . 1 . offset, 0 )
62
62
XCTAssertEqual ( two. fixIts. count, 0 )
63
63
}
64
64
65
+ func testReadDiagsWithNoLocation( ) throws {
66
+ let serializedDiagnosticsPath = AbsolutePath ( #file) . parentDirectory
67
+ . appending ( components: " Inputs " , " no-location.dia " )
68
+ let contents = try localFileSystem. readFileContents ( serializedDiagnosticsPath)
69
+ let serializedDiags = try SerializedDiagnostics ( bytes: contents)
70
+
71
+ XCTAssertEqual ( serializedDiags. versionNumber, 2 )
72
+ XCTAssertEqual ( serializedDiags. diagnostics. count, 1 )
73
+
74
+ let diag = serializedDiags. diagnostics [ 0 ]
75
+ XCTAssertEqual ( diag. text, " API breakage: func foo() has been removed " )
76
+ XCTAssertEqual ( diag. level, . error)
77
+ XCTAssertNil ( diag. location)
78
+ XCTAssertEqual ( diag. category, " api-digester-breaking-change " )
79
+ XCTAssertNil ( diag. flag)
80
+ XCTAssertEqual ( diag. ranges. count, 0 )
81
+ XCTAssertEqual ( diag. fixIts. count, 0 )
82
+ }
83
+
65
84
func testReadClangSerializedDiags( ) throws {
66
85
let serializedDiagnosticsPath = AbsolutePath ( #file) . parentDirectory
67
86
. appending ( components: " Inputs " , " clang.dia " )
@@ -74,9 +93,9 @@ final class SerializedDiagnosticsTests: XCTestCase {
74
93
let one = serializedDiags. diagnostics [ 1 ]
75
94
XCTAssertEqual ( one. text, " values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead " )
76
95
XCTAssertEqual ( one. level, . warning)
77
- XCTAssertEqual ( one. location. line, 252 )
78
- XCTAssertEqual ( one. location. column, 137 )
79
- XCTAssertEqual ( one. location. offset, 10046 )
96
+ XCTAssertEqual ( one. location? . line, 252 )
97
+ XCTAssertEqual ( one. location? . column, 137 )
98
+ XCTAssertEqual ( one. location? . offset, 10046 )
80
99
XCTAssertEqual ( one. category, " Format String Issue " )
81
100
XCTAssertEqual ( one. flag, " format " )
82
101
XCTAssertEqual ( one. ranges. count, 4 )
0 commit comments