@@ -6395,6 +6395,48 @@ final class SwiftDriverTests: XCTestCase {
6395
6395
#endif
6396
6396
#endif
6397
6397
}
6398
+
6399
+ func testToolSearching( ) throws {
6400
+ var driver = try Driver ( args: [ " swiftc " , " -print-target-info " ] )
6401
+ let jobs = try driver. planBuild ( )
6402
+ XCTAssertEqual ( jobs. count, 1 )
6403
+ let defaultSwiftFrontend = jobs. first!. tool. absolutePath!
6404
+
6405
+ try withTemporaryDirectory { toolsDirectory in
6406
+ let customSwiftFrontend = toolsDirectory. appending ( component: executableName ( " swift-frontend " ) )
6407
+ try localFileSystem. createSymbolicLink ( customSwiftFrontend, pointingAt: defaultSwiftFrontend, relative: false )
6408
+
6409
+ // test if PATH is searched
6410
+ do {
6411
+ var driver = try Driver ( args: [ " swiftc " , " -print-target-info " ] , env: [ " PATH " : toolsDirectory. pathString] )
6412
+ let jobs = try driver. planBuild ( )
6413
+ XCTAssertEqual ( jobs. count, 1 )
6414
+ XCTAssertEqual ( jobs. first!. tool. name, customSwiftFrontend. pathString)
6415
+ }
6416
+
6417
+ try withTemporaryDirectory { tempDirectory in
6418
+ try localFileSystem. changeCurrentWorkingDirectory ( to: tempDirectory)
6419
+ let anotherSwiftFrontend = localFileSystem. currentWorkingDirectory!. appending ( component: executableName ( " swift-frontend " ) )
6420
+ try localFileSystem. createSymbolicLink ( anotherSwiftFrontend, pointingAt: defaultSwiftFrontend, relative: false )
6421
+
6422
+ // test if tools directory is respected
6423
+ do {
6424
+ var driver = try Driver ( args: [ " swiftc " , " -print-target-info " , " -tools-directory " , toolsDirectory. pathString] )
6425
+ let jobs = try driver. planBuild ( )
6426
+ XCTAssertEqual ( jobs. count, 1 )
6427
+ XCTAssertEqual ( jobs. first!. tool. name, customSwiftFrontend. pathString)
6428
+ }
6429
+
6430
+ // test if current working directory is searched
6431
+ do {
6432
+ var driver = try Driver ( args: [ " swiftc " , " -print-target-info " ] , env: [ " PATH " : " " ] )
6433
+ let jobs = try driver. planBuild ( )
6434
+ XCTAssertEqual ( jobs. count, 1 )
6435
+ XCTAssertEqual ( jobs. first!. tool. name, anotherSwiftFrontend. pathString)
6436
+ }
6437
+ }
6438
+ }
6439
+ }
6398
6440
}
6399
6441
6400
6442
func assertString(
0 commit comments