@@ -6894,6 +6894,41 @@ final class SwiftDriverTests: XCTestCase {
6894
6894
XCTAssertEqual ( jobs. first!. tool. name, swiftHelp. pathString)
6895
6895
}
6896
6896
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
+
6897
6932
func testSourceInfoFileEmitOption( ) throws {
6898
6933
// implicit
6899
6934
do {
0 commit comments