Merge pull request #1015 from ahoppen/ahoppen/no-rename-failures

Ensure rename tests don’t fail if running with a sourcekitd that doesn’t support rename yet
This commit is contained in:
Alex Hoppen
2024-01-09 15:18:08 -08:00
committed by GitHub
2 changed files with 55 additions and 17 deletions

View File

@@ -592,8 +592,10 @@ extension SwiftLanguageServer {
in: snapshot,
includeNonEditableBaseNames: true
)
guard let name = response.name,
let range = response.relatedIdentifiers.first(where: { $0.range.contains(request.position) })?.range
guard let name = response.name else {
throw ResponseError.unknown("Running sourcekit-lsp with a version of sourcekitd that does not support rename")
}
guard let range = response.relatedIdentifiers.first(where: { $0.range.contains(request.position) })?.range
else {
return nil
}

View File

@@ -46,13 +46,22 @@ private func assertSingleFileRename(
let uri = DocumentURI.for(.swift, testName: testName)
let positions = testClient.openDocument(markedSource, uri: uri)
for marker in positions.allMarkers {
let response = try await testClient.send(
RenameRequest(
textDocument: TextDocumentIdentifier(uri),
position: positions[marker],
newName: newName
let response: WorkspaceEdit?
do {
response = try await testClient.send(
RenameRequest(
textDocument: TextDocumentIdentifier(uri),
position: positions[marker],
newName: newName
)
)
)
} catch let error as ResponseError {
if error.message == "Running sourcekit-lsp with a version of sourcekitd that does not support rename" {
throw XCTSkip(error.message)
} else {
throw error
}
}
let edits = try XCTUnwrap(response?.changes?[uri], "while performing rename at \(marker)", file: file, line: line)
let source = extractMarkers(markedSource).textWithoutMarkers
let renamed = apply(edits: edits, to: source)
@@ -127,9 +136,18 @@ private func assertMultiFileRename(
ws.testClient.send(DidCloseTextDocumentNotification(textDocument: TextDocumentIdentifier(uri)))
}
for marker in markers {
let response = try await ws.testClient.send(
RenameRequest(textDocument: TextDocumentIdentifier(uri), position: positions[marker], newName: newName)
)
let response: WorkspaceEdit?
do {
response = try await ws.testClient.send(
RenameRequest(textDocument: TextDocumentIdentifier(uri), position: positions[marker], newName: newName)
)
} catch let error as ResponseError {
if error.message == "Running sourcekit-lsp with a version of sourcekitd that does not support rename" {
throw XCTSkip(error.message)
} else {
throw error
}
}
let changes = try XCTUnwrap(response?.changes)
try assertRenamedSourceMatches(
originalFiles: files,
@@ -696,9 +714,18 @@ final class RenameTests: XCTestCase {
""",
uri: uri
)
let response = try await testClient.send(
PrepareRenameRequest(textDocument: TextDocumentIdentifier(uri), position: positions["1"])
)
let response: PrepareRenameResponse?
do {
response = try await testClient.send(
PrepareRenameRequest(textDocument: TextDocumentIdentifier(uri), position: positions["1"])
)
} catch let error as ResponseError {
if error.message == "Running sourcekit-lsp with a version of sourcekitd that does not support rename" {
throw XCTSkip(error.message)
} else {
throw error
}
}
let range = try XCTUnwrap(response?.range)
let placeholder = try XCTUnwrap(response?.placeholder)
XCTAssertEqual(range, positions["1"]..<positions["2"])
@@ -715,9 +742,18 @@ final class RenameTests: XCTestCase {
""",
uri: uri
)
let response = try await testClient.send(
PrepareRenameRequest(textDocument: TextDocumentIdentifier(uri), position: positions["1"])
)
let response: PrepareRenameResponse?
do {
response = try await testClient.send(
PrepareRenameRequest(textDocument: TextDocumentIdentifier(uri), position: positions["1"])
)
} catch let error as ResponseError {
if error.message == "Running sourcekit-lsp with a version of sourcekitd that does not support rename" {
throw XCTSkip(error.message)
} else {
throw error
}
}
let range = try XCTUnwrap(response?.range)
let placeholder = try XCTUnwrap(response?.placeholder)
XCTAssertEqual(range, positions["1"]..<positions["2"])