Skip to content

Commit addfb9e

Browse files
authored
Merge pull request #1473 from ahoppen/relax-protocol-requirement-positions-in-tests
Relax assertions about diagnostics from missing protocol requirements
2 parents 91a0816 + 122c2ae commit addfb9e

File tree

2 files changed

+32
-13
lines changed

2 files changed

+32
-13
lines changed

Tests/SourceKitLSPTests/CodeActionTests.swift

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -428,22 +428,23 @@ final class CodeActionTests: XCTestCase {
428428
let diags = try await testClient.nextDiagnosticsNotification()
429429
XCTAssertEqual(diags.uri, uri)
430430
XCTAssertEqual(diags.diagnostics.count, 1)
431+
let diagPosition = try XCTUnwrap(diags.diagnostics.only?.range.lowerBound)
431432

432-
let textDocument = TextDocumentIdentifier(uri)
433-
let actionsRequest = CodeActionRequest(
434-
range: positions["1️⃣"]..<positions["1️⃣"],
435-
context: .init(diagnostics: diags.diagnostics),
436-
textDocument: textDocument
433+
let quickFixActionResult = try await testClient.send(
434+
CodeActionRequest(
435+
range: Range(diagPosition),
436+
context: .init(diagnostics: diags.diagnostics),
437+
textDocument: TextDocumentIdentifier(uri)
438+
)
437439
)
438-
let actionResult = try await testClient.send(actionsRequest)
439440

440-
guard case .codeActions(let codeActions) = actionResult else {
441+
guard case .codeActions(let quickFixCodeActions) = quickFixActionResult else {
441442
return XCTFail("Expected code actions, not commands as a response")
442443
}
443444

444445
// Check that the Fix-It action contains snippets
445446

446-
guard let quickFixAction = codeActions.filter({ $0.kind == .quickFix }).spm_only else {
447+
guard let quickFixAction = quickFixCodeActions.filter({ $0.kind == .quickFix }).spm_only else {
447448
return XCTFail("Expected exactly one quick fix action")
448449
}
449450
guard let change = quickFixAction.edit?.changes?[uri]?.spm_only else {
@@ -461,7 +462,19 @@ final class CodeActionTests: XCTestCase {
461462
)
462463

463464
// Check that the refactor action contains snippets
464-
guard let refactorAction = codeActions.filter({ $0.kind == .refactor }).spm_only else {
465+
let refactorActionResult = try await testClient.send(
466+
CodeActionRequest(
467+
range: Range(positions["1️⃣"]),
468+
context: .init(diagnostics: diags.diagnostics),
469+
textDocument: TextDocumentIdentifier(uri)
470+
)
471+
)
472+
473+
guard case .codeActions(let refactorActions) = refactorActionResult else {
474+
return XCTFail("Expected code actions, not commands as a response")
475+
}
476+
477+
guard let refactorAction = refactorActions.filter({ $0.kind == .refactor }).spm_only else {
465478
return XCTFail("Expected exactly one refactor action")
466479
}
467480
guard let command = refactorAction.command else {

Tests/SourceKitLSPTests/PullDiagnosticsTests.swift

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,13 @@ final class PullDiagnosticsTests: XCTestCase {
5454
)
5555
let uri = DocumentURI(for: .swift)
5656

57-
testClient.openDocument(
57+
let positions = testClient.openDocument(
5858
"""
5959
protocol MyProtocol {
6060
func bar()
6161
}
6262
63-
struct Test: MyProtocol {}
63+
struct 1️⃣Test: 2️⃣MyProtocol {}
6464
""",
6565
uri: uri
6666
)
@@ -73,9 +73,15 @@ final class PullDiagnosticsTests: XCTestCase {
7373

7474
XCTAssertEqual(diagnostics.count, 1)
7575
let diagnostic = try XCTUnwrap(diagnostics.first)
76-
XCTAssertEqual(diagnostic.range, Position(line: 4, utf16index: 7)..<Position(line: 4, utf16index: 7))
76+
XCTAssert(
77+
diagnostic.range == Range(positions["1️⃣"]) || diagnostic.range == Range(positions["2️⃣"]),
78+
"Unexpected range: \(diagnostic.range)"
79+
)
7780
let note = try XCTUnwrap(diagnostic.relatedInformation?.first)
78-
XCTAssertEqual(note.location.range, Position(line: 4, utf16index: 7)..<Position(line: 4, utf16index: 7))
81+
XCTAssert(
82+
note.location.range == Range(positions["1️⃣"]) || note.location.range == Range(positions["2️⃣"]),
83+
"Unexpected range: \(note.location.range)"
84+
)
7985
XCTAssertEqual(note.codeActions?.count ?? 0, 1)
8086

8187
let response = try await testClient.send(

0 commit comments

Comments
 (0)