Skip to content

Commit 43c1144

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 1a480b4 commit 43c1144

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
@@ -6823,6 +6823,41 @@ final class SwiftDriverTests: XCTestCase {
68236823
XCTAssertEqual(jobs.first!.tool.name, swiftHelp.pathString)
68246824
}
68256825

6826+
func testSwiftClangOverride() throws {
6827+
var env = ProcessEnv.vars
6828+
let swiftClang = try AbsolutePath(validating: "/A/Path/swift-clang")
6829+
env["SWIFT_DRIVER_CLANG_EXEC"] = swiftClang.pathString
6830+
6831+
var driver = try Driver(
6832+
args: ["swiftc", "-emit-library", "foo.swift", "bar.o", "-o", "foo.l"],
6833+
env: env)
6834+
let jobs = try driver.planBuild()
6835+
XCTAssertEqual(jobs.count, 2)
6836+
let linkJob = jobs[1]
6837+
XCTAssertEqual(linkJob.tool.name, swiftClang.pathString)
6838+
}
6839+
6840+
func testSwiftClangxxOverride() throws {
6841+
#if os(iOS) || os(macOS) || os(tvOS) || os(watchOS)
6842+
throw XCTSkip("Darwin always uses `clang` to link")
6843+
#else
6844+
var env = ProcessEnv.vars
6845+
let swiftClang = try AbsolutePath(validating: "/A/Path/swift-clang")
6846+
let swiftClangxx = try AbsolutePath(validating: "/A/Path/swift-clang++")
6847+
env["SWIFT_DRIVER_CLANG_EXEC"] = swiftClang.pathString
6848+
env["SWIFT_DRIVER_CLANGXX_EXEC"] = swiftClangxx.pathString
6849+
6850+
var driver = try Driver(
6851+
args: ["swiftc", "-cxx-interoperability-mode=swift-5.9", "-emit-library",
6852+
"foo.swift", "bar.o", "-o", "foo.l"],
6853+
env: env)
6854+
6855+
let jobs = try driver.planBuild()
6856+
let linkJob = jobs.last!
6857+
XCTAssertEqual(linkJob.tool.name, swiftClangxx.pathString)
6858+
#endif
6859+
}
6860+
68266861
func testSourceInfoFileEmitOption() throws {
68276862
// implicit
68286863
do {

0 commit comments

Comments
 (0)