Skip to content

Commit 1890792

Browse files
committed
[Test] Allow for diagnostic verifier to expect an alternative diagnostic
And fix 'testTraceDependency' where we can have two possibilities for the emitted note.
1 parent 2402116 commit 1890792

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

Tests/SwiftDriverTests/ExplicitModuleBuildTests.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2383,11 +2383,8 @@ final class ExplicitModuleBuildTests: XCTestCase {
23832383
try driver.run(jobs: jobs)
23842384

23852385
diagnostics.expect(.remark("Module 'testTraceDependency' depends on 'A'"))
2386-
#if os(macOS)
2387-
diagnostics.expect(.note("[testTraceDependency] -> [A] -> [A](ObjC)"))
2388-
#else
2389-
diagnostics.expect(.note("[testTraceDependency] -> [C](ObjC) -> [B](ObjC) -> [A](ObjC)"))
2390-
#endif
2386+
diagnostics.expect(.note("[testTraceDependency] -> [A] -> [A](ObjC)"),
2387+
alternativeMessage: .note("[testTraceDependency] -> [C](ObjC) -> [B](ObjC) -> [A](ObjC)"))
23912388
}
23922389
}
23932390
}

Tests/SwiftDriverTests/Helpers/AssertDiagnostics.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ func assertNoDiagnostics(
103103
final class DiagnosticVerifier {
104104
fileprivate struct Expectation {
105105
let message: Diagnostic.Message
106+
let alternativeMessage: Diagnostic.Message?
106107
let file: StaticString
107108
let line: UInt
108109
}
@@ -143,6 +144,10 @@ final class DiagnosticVerifier {
143144
if diag.matches(expectation.message) {
144145
self.expected.remove(at: i)
145146
return
147+
} else if let alternativeExpectedMessage = expectation.alternativeMessage,
148+
diag.matches(alternativeExpectedMessage) {
149+
self.expected.remove(at: i)
150+
return
146151
}
147152
}
148153

@@ -156,6 +161,7 @@ final class DiagnosticVerifier {
156161
/// is emitted by then, a test assertion will fail.
157162
func expect(
158163
_ message: Diagnostic.Message,
164+
alternativeMessage: Diagnostic.Message? = nil,
159165
repetitions: Int = 1,
160166
file: StaticString = #file, line: UInt = #line
161167
) {
@@ -168,7 +174,9 @@ final class DiagnosticVerifier {
168174
if remaining < 1 { return }
169175
}
170176

171-
let expectation = Expectation(message: message, file: file, line: line)
177+
let expectation = Expectation(message: message,
178+
alternativeMessage: alternativeMessage,
179+
file: file, line: line)
172180
self.expected.append(contentsOf: repeatElement(expectation, count: remaining))
173181
}
174182
}

0 commit comments

Comments
 (0)