@@ -26,7 +26,7 @@ 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 " ) )
29
+ XCTAssertEqual ( one. location. filename? . hasSuffix ( " /StoreSearchCoordinator.swift " ) , true )
30
30
XCTAssertEqual ( one. location. line, 21 )
31
31
XCTAssertEqual ( one. location. column, 69 )
32
32
XCTAssertEqual ( one. location. offset, 0 )
@@ -36,32 +36,54 @@ final class SerializedDiagnosticsTests: XCTestCase {
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 " ) )
47
+ XCTAssertEqual ( two. location. filename? . hasSuffix ( " /Observable.swift " ) , true )
48
48
XCTAssertEqual ( two. location. line, 34 )
49
49
XCTAssertEqual ( two. location. column, 13 )
50
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. filename)
78
+ XCTAssertEqual ( diag. location. line, 0 )
79
+ XCTAssertEqual ( diag. location. column, 0 )
80
+ XCTAssertEqual ( diag. location. offset, 0 )
81
+ XCTAssertEqual ( diag. category, " api-digester-breaking-change " )
82
+ XCTAssertNil ( diag. flag)
83
+ XCTAssertEqual ( diag. ranges. count, 0 )
84
+ XCTAssertEqual ( diag. fixIts. count, 0 )
85
+ }
86
+
65
87
func testReadClangSerializedDiags( ) throws {
66
88
let serializedDiagnosticsPath = AbsolutePath ( #file) . parentDirectory
67
89
. appending ( components: " Inputs " , " clang.dia " )
0 commit comments