From fc8a7301b29554867175fa2ca98ea8ca3e7d2b19 Mon Sep 17 00:00:00 2001 From: Alex Hoppen Date: Thu, 18 Apr 2024 16:18:01 -0700 Subject: [PATCH] Wait for indexstore-db to update after building a SwiftPM project in tests Otherwise we can get into race conditions where we run a request before the index has actually been updated. While at it, also add logging when IndexStoreDB has been updated. rdar://126635046 --- Sources/SourceKitLSP/SourceKitIndexDelegate.swift | 2 ++ Tests/SourceKitLSPTests/RenameTests.swift | 5 +++-- Tests/SourceKitLSPTests/TestDiscoveryTests.swift | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Sources/SourceKitLSP/SourceKitIndexDelegate.swift b/Sources/SourceKitLSP/SourceKitIndexDelegate.swift index 39591a52..2b5aeaa3 100644 --- a/Sources/SourceKitLSP/SourceKitIndexDelegate.swift +++ b/Sources/SourceKitLSP/SourceKitIndexDelegate.swift @@ -12,6 +12,7 @@ import Dispatch import IndexStoreDB +import LSPLogging import SKCore import SKSupport @@ -62,6 +63,7 @@ public actor SourceKitIndexDelegate: IndexDelegate { } private func indexChanged() { + logger.debug("IndexStoreDB changed") for callback in mainFilesChangedCallbacks { queue.async { await callback() diff --git a/Tests/SourceKitLSPTests/RenameTests.swift b/Tests/SourceKitLSPTests/RenameTests.swift index a2d98e11..8dae7305 100644 --- a/Tests/SourceKitLSPTests/RenameTests.swift +++ b/Tests/SourceKitLSPTests/RenameTests.swift @@ -584,7 +584,7 @@ final class RenameTests: XCTestCase { name: "MyLibrary", targets: [ .target( - name: "MyLibrary", + name: "MyLibrary", swiftSettings: [.unsafeFlags(["-Xfrontend", "-disable-objc-attr-requires-foundation-module"])] ) ] @@ -635,7 +635,7 @@ final class RenameTests: XCTestCase { name: "MyLibrary", targets: [ .target( - name: "MyLibrary", + name: "MyLibrary", swiftSettings: [.unsafeFlags(["-Xfrontend", "-disable-objc-attr-requires-foundation-module"])] ) ] @@ -1158,6 +1158,7 @@ final class RenameTests: XCTestCase { ) try await SwiftPMTestProject.build(at: project.scratchDirectory) + _ = try await project.testClient.send(PollIndexRequest()) let resultAfterFileMove = try await project.testClient.send( RenameRequest(textDocument: TextDocumentIdentifier(callerUri), position: callerPositions["3️⃣"], newName: "bar") diff --git a/Tests/SourceKitLSPTests/TestDiscoveryTests.swift b/Tests/SourceKitLSPTests/TestDiscoveryTests.swift index 9aa0dabc..592e4dd4 100644 --- a/Tests/SourceKitLSPTests/TestDiscoveryTests.swift +++ b/Tests/SourceKitLSPTests/TestDiscoveryTests.swift @@ -247,6 +247,7 @@ final class TestDiscoveryTests: XCTestCase { ) try await SwiftPMTestProject.build(at: project.scratchDirectory) + _ = try await project.testClient.send(PollIndexRequest()) // After indexing, we know that `LooksLikeTestCaseButIsNot` does not inherit from `XCTestCase` and we don't report any tests. let indexBasedTests = try await project.testClient.send(