Files
sourcekit-lsp/Tests/LanguageServerProtocolTests/ConnectionTests.swift
Alex Hoppen df594e332c Set a default timeout duration
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
2022-06-14 17:26:06 +02:00

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)
}
}