Skip to content

Commit a7a6014

Browse files
committed
Fix test failures after merging rebranch
AFAICT, when chainging build settings `clangd` now provides two `PublishDiagnosticNotifications`: One with the diagnostics that were still computed from the old build settings, followed by a notification that contains the diagnostics for the new build settings. Relax the tests so that we don’t expect the *next* diagnsotics notification to contain the the updated diagnostics but just expect to receive any diagnostic notification within a timeout that contains the updated diagnostics. rdar://115435598
1 parent 640abbb commit a7a6014

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

Tests/SourceKitLSPTests/BuildSystemTests.swift

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,6 @@ final class BuildSystemTests: XCTestCase {
123123
// MARK: - Tests
124124

125125
func testClangdDocumentUpdatedBuildSettings() async throws {
126-
try XCTSkipIf(true, "rdar://115435598 - crashing on rebranch")
127-
128126
guard haveClangd else { return }
129127

130128
let doc = DocumentURI.for(.objective_c)
@@ -155,14 +153,17 @@ final class BuildSystemTests: XCTestCase {
155153
let newSettings = FileBuildSettings(compilerArguments: args + ["-DFOO"])
156154
buildSystem.buildSettingsByFile[doc] = newSettings
157155

158-
let expectation = XCTestExpectation(description: "refresh")
159-
let refreshedDiags = try await testClient.nextDiagnosticsNotification()
160-
XCTAssertEqual(refreshedDiags.diagnostics.count, 0)
161-
XCTAssertEqual(text, documentManager.latestSnapshot(doc)!.text)
162-
163156
await buildSystem.delegate?.fileBuildSettingsChanged([doc])
164157

165-
try await fulfillmentOfOrThrow([expectation])
158+
var receivedCorrectDiagnostic = false
159+
for _ in 0..<Int(defaultTimeout) {
160+
let refreshedDiags = try await testClient.nextDiagnosticsNotification(timeout: 1)
161+
if refreshedDiags.diagnostics.count == 0, text == documentManager.latestSnapshot(doc)!.text {
162+
receivedCorrectDiagnostic = true
163+
break
164+
}
165+
}
166+
XCTAssert(receivedCorrectDiagnostic)
166167
}
167168

168169
func testSwiftDocumentUpdatedBuildSettings() async throws {
@@ -269,18 +270,16 @@ final class BuildSystemTests: XCTestCase {
269270
}
270271

271272
func testMainFilesChanged() async throws {
272-
try XCTSkipIf(true, "rdar://115176405 - failing on rebranch due to extra published diagnostic")
273-
274273
let ws = try await mutableSourceKitTibsTestWorkspace(name: "MainFiles")!
275274
let unique_h = ws.testLoc("unique").docIdentifier.uri
276275

277276
try ws.openDocument(unique_h.fileURL!, language: .cpp)
278277

279-
let openDiags = try await testClient.nextDiagnosticsNotification()
278+
let openDiags = try await ws.testClient.nextDiagnosticsNotification()
280279
XCTAssertEqual(openDiags.diagnostics.count, 0)
281280

282281
try ws.buildAndIndex()
283-
let diagsFromD = try await testClient.nextDiagnosticsNotification()
282+
let diagsFromD = try await ws.testClient.nextDiagnosticsNotification()
284283
XCTAssertEqual(diagsFromD.diagnostics.count, 1)
285284
let diagFromD = try XCTUnwrap(diagsFromD.diagnostics.first)
286285
XCTAssertEqual(diagFromD.severity, .warning)
@@ -301,11 +300,19 @@ final class BuildSystemTests: XCTestCase {
301300
)
302301
}
303302

304-
let diagsFromC = try await testClient.nextDiagnosticsNotification()
305-
XCTAssertEqual(diagsFromC.diagnostics.count, 1)
306-
let diagFromC = try XCTUnwrap(diagsFromC.diagnostics.first)
307-
XCTAssertEqual(diagFromC.severity, .warning)
308-
XCTAssertEqual(diagFromC.message, "UNIQUE_INCLUDED_FROM_C")
303+
var receivedCorrectDiagnostic = false
304+
for _ in 0..<Int(defaultTimeout) {
305+
let diagsFromC = try await ws.testClient.nextDiagnosticsNotification(timeout: 1)
306+
guard diagsFromC.diagnostics.count == 1, let diagFromC = diagsFromC.diagnostics.first else {
307+
continue
308+
}
309+
guard diagFromC.severity == .warning, diagFromC.message == "UNIQUE_INCLUDED_FROM_C" else {
310+
continue
311+
}
312+
receivedCorrectDiagnostic = true
313+
break
314+
}
315+
XCTAssert(receivedCorrectDiagnostic)
309316
}
310317

311318
private func clangBuildSettings(for uri: DocumentURI) -> FileBuildSettings {

0 commit comments

Comments
 (0)