Skip to content

Commit 3a35503

Browse files
committed
Test: Check clang overrides
Check that the clang override environment variables actually do something. Note that clang++ is only used to link on non-Darwin platforms when the interop mode is swift-5.9.
1 parent fec9216 commit 3a35503

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6806,6 +6806,41 @@ final class SwiftDriverTests: XCTestCase {
68066806
XCTAssertEqual(jobs.first!.tool.name, swiftHelp.pathString)
68076807
}
68086808

6809+
func testSwiftClangOverride() throws {
6810+
var env = ProcessEnv.vars
6811+
let swiftClang = try AbsolutePath(validating: "/A/Path/swift-clang")
6812+
env["SWIFT_DRIVER_CLANG_EXEC"] = swiftClang.pathString
6813+
6814+
var driver = try Driver(
6815+
args: ["swiftc", "-emit-library", "foo.swift", "bar.o", "-o", "foo.l"],
6816+
env: env)
6817+
let jobs = try driver.planBuild()
6818+
XCTAssertEqual(jobs.count, 2)
6819+
let linkJob = jobs[1]
6820+
XCTAssertEqual(linkJob.tool.name, swiftClang.pathString)
6821+
}
6822+
6823+
func testSwiftClangxxOverride() throws {
6824+
#if os(iOS) || os(macOS) || os(tvOS) || os(watchOS)
6825+
throw XCTSkip("Darwin always uses `clang` to link")
6826+
#else
6827+
var env = ProcessEnv.vars
6828+
let swiftClang = try AbsolutePath(validating: "/A/Path/swift-clang")
6829+
let swiftClangxx = try AbsolutePath(validating: "/A/Path/swift-clang++")
6830+
env["SWIFT_DRIVER_CLANG_EXEC"] = swiftClang.pathString
6831+
env["SWIFT_DRIVER_CLANGXX_EXEC"] = swiftClangxx.pathString
6832+
6833+
var driver = try Driver(
6834+
args: ["swiftc", "-cxx-interoperability-mode=swift-5.9", "-emit-library",
6835+
"foo.swift", "bar.o", "-o", "foo.l"],
6836+
env: env)
6837+
6838+
let jobs = try driver.planBuild()
6839+
let linkJob = jobs.last!
6840+
XCTAssertEqual(linkJob.tool.name, swiftClangxx.pathString)
6841+
#endif
6842+
}
6843+
68096844
func testSourceInfoFileEmitOption() throws {
68106845
// implicit
68116846
do {

0 commit comments

Comments
 (0)