@@ -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