Skip to content

Commit 9aabdda

Browse files
authored
Merge pull request #1926 from apple/revert-1920-testprocess-fix-pr
2 parents bb44333 + 270b42a commit 9aabdda

File tree

3 files changed

+36
-34
lines changed

3 files changed

+36
-34
lines changed

Diff for: Foundation.xcodeproj/project.pbxproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -3124,7 +3124,7 @@
31243124
PRODUCT_NAME = "$(TARGET_NAME)";
31253125
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
31263126
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
3127-
SWIFT_VERSION = 5.0;
3127+
SWIFT_VERSION = 4.2;
31283128
};
31293129
name = Debug;
31303130
};
@@ -3144,7 +3144,7 @@
31443144
MACOSX_DEPLOYMENT_TARGET = 10.12;
31453145
PRODUCT_BUNDLE_IDENTIFIER = org.swift.xdgTestHelper;
31463146
PRODUCT_NAME = "$(TARGET_NAME)";
3147-
SWIFT_VERSION = 5.0;
3147+
SWIFT_VERSION = 4.2;
31483148
};
31493149
name = Release;
31503150
};

Diff for: TestFoundation/TestProcess.swift

+34-29
Original file line numberDiff line numberDiff line change
@@ -248,38 +248,37 @@ class TestProcess : XCTestCase {
248248
}
249249
}
250250

251-
func helperToolEnvironment(from environment: [String: String]) -> [String: String] {
252-
var result = environment
253-
let importantEnvVars = ProcessInfo.processInfo.environment.filter {
254-
$0.key.hasPrefix("LD_") || $0.key.hasPrefix("DYLD_")
255-
}
256-
for entry in importantEnvVars {
257-
result[entry.key] = entry.value
251+
func test_passthrough_environment() {
252+
do {
253+
let (output, _) = try runTask(["/usr/bin/env"], environment: nil)
254+
let env = try parseEnv(output)
255+
XCTAssertGreaterThan(env.count, 0)
256+
} catch {
257+
// FIXME: SR-9930 parseEnv fails if an environment variable contains
258+
// a newline.
259+
// XCTFail("Test failed: \(error)")
258260
}
259-
return result
260-
}
261-
262-
func test_passthrough_environment() throws {
263-
let helper = xdgTestHelperURL()
264-
let (output, _) = try runTask([helper.path, "--env"], environment: nil)
265-
let env = try parseEnv(output)
266-
XCTAssertGreaterThan(env.count, 0)
267261
}
268262

269-
func test_no_environment() throws {
270-
let helper = xdgTestHelperURL()
271-
let input = helperToolEnvironment(from: [:])
272-
let (output, _) = try runTask([helper.path, "--env"], environment: input)
273-
let env = try parseEnv(output)
274-
XCTAssertEqual(env, input)
263+
func test_no_environment() {
264+
do {
265+
let (output, _) = try runTask(["/usr/bin/env"], environment: [:])
266+
let env = try parseEnv(output)
267+
XCTAssertEqual(env.count, 0)
268+
} catch {
269+
XCTFail("Test failed: \(error)")
270+
}
275271
}
276272

277-
func test_custom_environment() throws {
278-
let helper = xdgTestHelperURL()
279-
let input = helperToolEnvironment(from: ["HELLO": "WORLD", "HOME": "CUPERTINO"])
280-
let (output, _) = try runTask([helper.path, "--env"], environment: input)
281-
let env = try parseEnv(output)
282-
XCTAssertEqual(env, input)
273+
func test_custom_environment() {
274+
do {
275+
let input = ["HELLO": "WORLD", "HOME": "CUPERTINO"]
276+
let (output, _) = try runTask(["/usr/bin/env"], environment: input)
277+
let env = try parseEnv(output)
278+
XCTAssertEqual(env, input)
279+
} catch {
280+
XCTFail("Test failed: \(error)")
281+
}
283282
}
284283

285284
private func realpathOf(path: String) -> String? {
@@ -655,8 +654,14 @@ internal func runTask(_ arguments: [String], environment: [String: String]? = ni
655654
}
656655

657656
private func parseEnv(_ env: String) throws -> [String: String] {
658-
let dictionary = try PropertyListSerialization.propertyList(from: try env.data(using: .utf8).unwrapped(), format: nil) as? [String: String]
659-
return try dictionary.unwrapped()
657+
var result = [String: String]()
658+
for line in env.components(separatedBy: "\n") where line != "" {
659+
guard let range = line.range(of: "=") else {
660+
throw Error.InvalidEnvironmentVariable(line)
661+
}
662+
result[String(line[..<range.lowerBound])] = String(line[range.upperBound...])
663+
}
664+
return result
660665
}
661666
#endif
662667

Diff for: TestFoundation/xdgTestHelper/main.swift

-3
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,6 @@ guard let arg = arguments.next() else {
168168
}
169169

170170
switch arg {
171-
case "--env":
172-
try! FileHandle.standardOutput.write(contentsOf: PropertyListSerialization.data(fromPropertyList: ProcessInfo.processInfo.environment, format: .xml, options: 0))
173-
174171
case "--xdgcheck":
175172
XDGCheck.run()
176173

0 commit comments

Comments
 (0)