mirror of
https://github.com/apple/sourcekit-lsp.git
synced 2026-03-02 18:23:24 +01:00
Instead of having ad-hoc timeout durations in all the test cases, specify a default timeout duration that can be used by tests. This allows us increase the timeout duration for all tests if we discover that e.g. sourcekitd is slower in CI setups. rdar://91615376
77 lines
2.3 KiB
Swift
77 lines
2.3 KiB
Swift
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
import LanguageServerProtocol
|
|
import LSPTestSupport
|
|
import XCTest
|
|
|
|
// Workaround ambiguity with Foundation.
|
|
typealias Notification = LanguageServerProtocol.Notification
|
|
|
|
class ConnectionTests: XCTestCase {
|
|
|
|
var connection: TestLocalConnection! = nil
|
|
|
|
override func setUp() {
|
|
connection = TestLocalConnection()
|
|
connection.client.allowUnexpectedNotification = false
|
|
}
|
|
|
|
override func tearDown() {
|
|
connection.close()
|
|
}
|
|
|
|
func testEcho() {
|
|
let client = connection.client
|
|
let expectation = self.expectation(description: "response received")
|
|
|
|
_ = client.send(EchoRequest(string: "hello!")) { resp in
|
|
XCTAssertEqual(try! resp.get(), "hello!")
|
|
expectation.fulfill()
|
|
}
|
|
|
|
waitForExpectations(timeout: defaultTimeout)
|
|
}
|
|
|
|
func testEchoError() {
|
|
let client = connection.client
|
|
let expectation = self.expectation(description: "response received 1")
|
|
let expectation2 = self.expectation(description: "response received 2")
|
|
|
|
_ = client.send(EchoError(code: nil)) { resp in
|
|
XCTAssertEqual(try! resp.get(), VoidResponse())
|
|
expectation.fulfill()
|
|
}
|
|
|
|
_ = client.send(EchoError(code: .unknownErrorCode, message: "hey!")) { resp in
|
|
XCTAssertEqual(resp, LSPResult<VoidResponse>.failure(ResponseError(code: .unknownErrorCode, message: "hey!")))
|
|
expectation2.fulfill()
|
|
}
|
|
|
|
waitForExpectations(timeout: defaultTimeout)
|
|
}
|
|
|
|
func testEchoNote() {
|
|
let client = connection.client
|
|
let expectation = self.expectation(description: "note received")
|
|
|
|
client.handleNextNotification { (note: Notification<EchoNotification>) in
|
|
XCTAssertEqual(note.params.string, "hello!")
|
|
expectation.fulfill()
|
|
}
|
|
|
|
client.send(EchoNotification(string: "hello!"))
|
|
|
|
waitForExpectations(timeout: defaultTimeout)
|
|
}
|
|
}
|