@@ -6894,6 +6894,41 @@ final class SwiftDriverTests: XCTestCase {
68946894 XCTAssertEqual ( jobs. first!. tool. name, swiftHelp. pathString)
68956895 }
68966896
6897+ func testSwiftClangOverride( ) throws {
6898+ var env = ProcessEnv . vars
6899+ let swiftClang = try AbsolutePath ( validating: " /A/Path/swift-clang " )
6900+ env [ " SWIFT_DRIVER_CLANG_EXEC " ] = swiftClang. pathString
6901+
6902+ var driver = try Driver (
6903+ args: [ " swiftc " , " -emit-library " , " foo.swift " , " bar.o " , " -o " , " foo.l " ] ,
6904+ env: env)
6905+ let jobs = try driver. planBuild ( )
6906+ XCTAssertEqual ( jobs. count, 2 )
6907+ let linkJob = jobs [ 1 ]
6908+ XCTAssertEqual ( linkJob. tool. name, swiftClang. pathString)
6909+ }
6910+
6911+ func testSwiftClangxxOverride( ) throws {
6912+ #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS)
6913+ throw XCTSkip ( " Darwin always uses `clang` to link " )
6914+ #else
6915+ var env = ProcessEnv . vars
6916+ let swiftClang = try AbsolutePath ( validating: " /A/Path/swift-clang " )
6917+ let swiftClangxx = try AbsolutePath ( validating: " /A/Path/swift-clang++ " )
6918+ env [ " SWIFT_DRIVER_CLANG_EXEC " ] = swiftClang. pathString
6919+ env [ " SWIFT_DRIVER_CLANGXX_EXEC " ] = swiftClangxx. pathString
6920+
6921+ var driver = try Driver (
6922+ args: [ " swiftc " , " -cxx-interoperability-mode=swift-5.9 " , " -emit-library " ,
6923+ " foo.swift " , " bar.o " , " -o " , " foo.l " ] ,
6924+ env: env)
6925+
6926+ let jobs = try driver. planBuild ( )
6927+ let linkJob = jobs. last!
6928+ XCTAssertEqual ( linkJob. tool. name, swiftClangxx. pathString)
6929+ #endif
6930+ }
6931+
68976932 func testSourceInfoFileEmitOption( ) throws {
68986933 // implicit
68996934 do {
0 commit comments