mirror of
https://github.com/apple/sourcekit-lsp.git
synced 2026-03-02 18:23:24 +01:00
According to the LSP specification, arbitrary URIs can be used as document identifiers. Instead of internally assuming that all URIs are URLs, use a DocumentURI enum to represent URIs. These can either be file URLs or other URIs whose value as treated as an opaque string.
104 lines
2.7 KiB
Swift
104 lines
2.7 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 SKCore
|
|
import TSCBasic
|
|
import XCTest
|
|
|
|
final class FallbackBuildSystemTests: XCTestCase {
|
|
|
|
func testSwift() {
|
|
let sdk = AbsolutePath("/my/sdk")
|
|
let source = AbsolutePath("/my/source.swift")
|
|
|
|
let bs = FallbackBuildSystem()
|
|
bs.sdkpath = sdk
|
|
|
|
XCTAssertNil(bs.indexStorePath)
|
|
XCTAssertNil(bs.indexDatabasePath)
|
|
|
|
let settings = bs.settings(for: source.asURI, .swift)!
|
|
XCTAssertNil(settings.workingDirectory)
|
|
|
|
let args = settings.compilerArguments
|
|
XCTAssertEqual(args, [
|
|
"-sdk",
|
|
sdk.pathString,
|
|
source.pathString,
|
|
])
|
|
|
|
bs.sdkpath = nil
|
|
|
|
XCTAssertEqual(bs.settings(for: source.asURI, .swift)?.compilerArguments, [
|
|
source.pathString,
|
|
])
|
|
}
|
|
|
|
func testCXX() {
|
|
let sdk = AbsolutePath("/my/sdk")
|
|
let source = AbsolutePath("/my/source.cpp")
|
|
|
|
let bs = FallbackBuildSystem()
|
|
bs.sdkpath = sdk
|
|
|
|
let settings = bs.settings(for: source.asURI, .cpp)!
|
|
XCTAssertNil(settings.workingDirectory)
|
|
|
|
let args = settings.compilerArguments
|
|
XCTAssertEqual(args, [
|
|
"-isysroot",
|
|
sdk.pathString,
|
|
source.pathString,
|
|
])
|
|
|
|
bs.sdkpath = nil
|
|
|
|
XCTAssertEqual(bs.settings(for: source.asURI, .cpp)?.compilerArguments, [
|
|
source.pathString,
|
|
])
|
|
}
|
|
|
|
func testC() {
|
|
let source = AbsolutePath("/my/source.c")
|
|
let bs = FallbackBuildSystem()
|
|
bs.sdkpath = nil
|
|
XCTAssertEqual(bs.settings(for: source.asURI, .c)?.compilerArguments, [
|
|
source.pathString,
|
|
])
|
|
}
|
|
|
|
func testObjC() {
|
|
let source = AbsolutePath("/my/source.m")
|
|
let bs = FallbackBuildSystem()
|
|
bs.sdkpath = nil
|
|
XCTAssertEqual(bs.settings(for: source.asURI, .objective_c)?.compilerArguments, [
|
|
source.pathString,
|
|
])
|
|
}
|
|
|
|
func testObjCXX() {
|
|
let source = AbsolutePath("/my/source.mm")
|
|
let bs = FallbackBuildSystem()
|
|
bs.sdkpath = nil
|
|
XCTAssertEqual(bs.settings(for: source.asURI, .objective_cpp)?.compilerArguments, [
|
|
source.pathString,
|
|
])
|
|
}
|
|
|
|
func testUnknown() {
|
|
let source = AbsolutePath("/my/source.mm")
|
|
let bs = FallbackBuildSystem()
|
|
XCTAssertNil(bs.settings(for: source.asURI, Language(rawValue: "unknown")))
|
|
}
|
|
}
|