@@ -6823,6 +6823,41 @@ final class SwiftDriverTests: XCTestCase {
6823
6823
XCTAssertEqual ( jobs. first!. tool. name, swiftHelp. pathString)
6824
6824
}
6825
6825
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
+
6826
6861
func testSourceInfoFileEmitOption( ) throws {
6827
6862
// implicit
6828
6863
do {
0 commit comments