Skip to content

Commit 7038a52

Browse files
authored
Merge pull request #1077 from apple/revert-991-disfavor-cwd
Revert "Disfavor current working directory when looking up executables"
2 parents 7e7db3d + dbed814 commit 7038a52

File tree

2 files changed

+4
-57
lines changed

2 files changed

+4
-57
lines changed

Sources/SwiftDriver/Toolchains/Toolchain.swift

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -206,14 +206,13 @@ extension Toolchain {
206206
/// looks in the `executableDir`, `xcrunFind` or in the `searchPaths`.
207207
/// - Parameter executable: executable to look for [i.e. `swift`].
208208
func lookup(executable: String) throws -> AbsolutePath {
209-
if let overrideString = envVar(forExecutable: executableName(executable)),
210-
let path = try? AbsolutePath(validating: overrideString) {
211-
return path
209+
if let overrideString = envVar(forExecutable: executableName(executable)) {
210+
return try AbsolutePath(validating: overrideString)
212211
} else if let toolDir = toolDirectory,
213-
let path = lookupExecutablePath(filename: executableName(executable), currentWorkingDirectory: nil, searchPaths: [toolDir]) {
212+
let path = lookupExecutablePath(filename: executableName(executable), searchPaths: [toolDir]) {
214213
// Looking for tools from the tools directory.
215214
return path
216-
} else if let path = lookupExecutablePath(filename: executableName(executable), currentWorkingDirectory: nil, searchPaths: [executableDir]) {
215+
} else if let path = lookupExecutablePath(filename: executableName(executable), searchPaths: [executableDir]) {
217216
return path
218217
} else if let path = try? xcrunFind(executable: executableName(executable)) {
219218
return path

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -6395,58 +6395,6 @@ final class SwiftDriverTests: XCTestCase {
63956395
#endif
63966396
#endif
63976397
}
6398-
6399-
func testToolSearching() throws {
6400-
#if os(Windows)
6401-
let PATH = "Path"
6402-
#else
6403-
let PATH = "PATH"
6404-
#endif
6405-
let SWIFT_FRONTEND_EXEC = "SWIFT_DRIVER_SWIFT_FRONTEND_EXEC"
6406-
6407-
// We need to override SWIFT_DRIVER_SWIFT_FRONTEND_EXEC to prevent it from interfering the tests.
6408-
var driver = try Driver(args: ["swiftc", "-print-target-info"], env: [PATH: ProcessEnv.path!])
6409-
let jobs = try driver.planBuild()
6410-
XCTAssertEqual(jobs.count, 1)
6411-
let defaultSwiftFrontend = jobs.first!.tool.absolutePath!
6412-
6413-
try withTemporaryDirectory { toolsDirectory in
6414-
let customSwiftFrontend = toolsDirectory.appending(component: executableName("swift-frontend"))
6415-
try localFileSystem.createSymbolicLink(customSwiftFrontend, pointingAt: defaultSwiftFrontend, relative: false)
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 SWIFT_DRIVER_TOOLNAME_EXEC is respected
6423-
do {
6424-
var driver = try Driver(args: ["swiftc", "-print-target-info"],
6425-
env: [PATH: ProcessEnv.path!, SWIFT_FRONTEND_EXEC: customSwiftFrontend.pathString])
6426-
let jobs = try driver.planBuild()
6427-
XCTAssertEqual(jobs.count, 1)
6428-
XCTAssertEqual(jobs.first!.tool.name, customSwiftFrontend.pathString)
6429-
}
6430-
6431-
// test if tools directory is respected
6432-
do {
6433-
var driver = try Driver(args: ["swiftc", "-print-target-info", "-tools-directory", toolsDirectory.pathString],
6434-
env: [PATH: ProcessEnv.path!])
6435-
let jobs = try driver.planBuild()
6436-
XCTAssertEqual(jobs.count, 1)
6437-
XCTAssertEqual(jobs.first!.tool.name, customSwiftFrontend.pathString)
6438-
}
6439-
6440-
// test if current working directory is searched before PATH
6441-
do {
6442-
var driver = try Driver(args: ["swiftc", "-print-target-info"], env: [PATH: toolsDirectory.pathString])
6443-
let jobs = try driver.planBuild()
6444-
XCTAssertEqual(jobs.count, 1)
6445-
XCTAssertEqual(jobs.first!.tool.name, anotherSwiftFrontend.pathString)
6446-
}
6447-
}
6448-
}
6449-
}
64506398
}
64516399

64526400
func assertString(

0 commit comments

Comments
 (0)