Skip to content

Commit 58c6f7a

Browse files
committed
Fix some tests on Windows
1 parent aa427ed commit 58c6f7a

File tree

2 files changed

+76
-43
lines changed

2 files changed

+76
-43
lines changed

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 72 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1528,7 +1528,7 @@ final class SwiftDriverTests: XCTestCase {
15281528
XCTAssertEqual(plannedJobs[2].outputs.first!.file, VirtualPath.temporary(RelativePath("foo5.o")))
15291529
XCTAssertTrue(plannedJobs[3].tool.name.contains(driver1.targetTriple.isDarwin ? "ld" : "clang"))
15301530
XCTAssertEqual(plannedJobs[3].outputs.count, 1)
1531-
XCTAssertEqual(plannedJobs[3].outputs.first!.file, VirtualPath.relative(RelativePath("Test")))
1531+
XCTAssertEqual(plannedJobs[3].outputs.first!.file, VirtualPath.relative(RelativePath("Test\(executableFileSuffix)")))
15321532
}
15331533

15341534
// Test 1 partition results in 1 job
@@ -1812,28 +1812,33 @@ final class SwiftDriverTests: XCTestCase {
18121812
}
18131813

18141814
func testEmitModuleSeparately() throws {
1815+
#if os(Windows)
1816+
let foobar = "C:\\foo\\bar\\"
1817+
#else
1818+
let foobar = "/foo/bar/"
1819+
#endif
18151820
do {
1816-
var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module-path", "/foo/bar/Test.swiftmodule", "-experimental-emit-module-separately", "-emit-library", "-target", "x86_64-apple-macosx10.15"])
1821+
var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module-path", "\(foobar)Test.swiftmodule", "-experimental-emit-module-separately", "-emit-library"])
18171822
let plannedJobs = try driver.planBuild()
18181823
XCTAssertEqual(plannedJobs.count, 4)
18191824
XCTAssertTrue(plannedJobs[0].tool.name.contains("swift"))
18201825
XCTAssertEqual(plannedJobs[0].outputs.count, 3)
1821-
XCTAssertEqual(plannedJobs[0].outputs[0].file, .absolute(AbsolutePath("/foo/bar/Test.swiftmodule")))
1822-
XCTAssertEqual(plannedJobs[0].outputs[1].file, .absolute(AbsolutePath("/foo/bar/Test.swiftdoc")))
1823-
XCTAssertEqual(plannedJobs[0].outputs[2].file, .absolute(AbsolutePath("/foo/bar/Test.swiftsourceinfo")))
1826+
XCTAssertEqual(plannedJobs[0].outputs[0].file, .absolute(AbsolutePath("\(foobar)Test.swiftmodule")))
1827+
XCTAssertEqual(plannedJobs[0].outputs[1].file, .absolute(AbsolutePath("\(foobar)Test.swiftdoc")))
1828+
XCTAssertEqual(plannedJobs[0].outputs[2].file, .absolute(AbsolutePath("\(foobar)Test.swiftsourceinfo")))
18241829
}
18251830

18261831
do {
18271832
// We don't expect partial jobs when asking only for the swiftmodule with
18281833
// -experimental-emit-module-separately.
1829-
var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module-path", "/foo/bar/Test.swiftmodule", "-experimental-emit-module-separately"])
1834+
var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module-path", "\(foobar)Test.swiftmodule", "-experimental-emit-module-separately"])
18301835
let plannedJobs = try driver.planBuild()
18311836
XCTAssertEqual(plannedJobs.count, 1)
18321837
XCTAssertTrue(plannedJobs[0].tool.name.contains("swift"))
18331838
XCTAssertEqual(plannedJobs[0].outputs.count, 3)
1834-
XCTAssertEqual(plannedJobs[0].outputs[0].file, .absolute(AbsolutePath("/foo/bar/Test.swiftmodule")))
1835-
XCTAssertEqual(plannedJobs[0].outputs[1].file, .absolute(AbsolutePath("/foo/bar/Test.swiftdoc")))
1836-
XCTAssertEqual(plannedJobs[0].outputs[2].file, .absolute(AbsolutePath("/foo/bar/Test.swiftsourceinfo")))
1839+
XCTAssertEqual(plannedJobs[0].outputs[0].file, .absolute(AbsolutePath("\(foobar)Test.swiftmodule")))
1840+
XCTAssertEqual(plannedJobs[0].outputs[1].file, .absolute(AbsolutePath("\(foobar)Test.swiftdoc")))
1841+
XCTAssertEqual(plannedJobs[0].outputs[2].file, .absolute(AbsolutePath("\(foobar)Test.swiftsourceinfo")))
18371842
}
18381843
}
18391844

@@ -2352,6 +2357,9 @@ final class SwiftDriverTests: XCTestCase {
23522357

23532358
// Test cases ported from Driver/macabi-environment.swift
23542359
func testDarwinSDKVersioning() throws {
2360+
#if os(Windows)
2361+
throw XCTSkip("currently unable to build against Darwin SDK on Windows")
2362+
#endif
23552363
try withTemporaryDirectory { tmpDir in
23562364
let sdk1 = tmpDir.appending(component: "MacOSX10.15.versioned.sdk")
23572365
try localFileSystem.writeFileContents(sdk1.appending(component: "SDKSettings.json")) {
@@ -2509,6 +2517,9 @@ final class SwiftDriverTests: XCTestCase {
25092517
}
25102518

25112519
func testDarwinLinkerPlatformVersion() throws {
2520+
#if os(Windows)
2521+
throw XCTSkip("currently unable to build against Darwin SDK on Windows")
2522+
#endif
25122523
do {
25132524
var driver = try Driver(args: ["swiftc",
25142525
"-target", "x86_64-apple-macos10.15",
@@ -2680,11 +2691,11 @@ final class SwiftDriverTests: XCTestCase {
26802691
XCTAssertEqual(plannedJobs.count, 5)
26812692
XCTAssertEqual(generateDSYMJob.outputs.last?.file, try VirtualPath(path: "Test.dSYM"))
26822693
} else {
2683-
XCTAssertEqual(plannedJobs.count, 6)
2694+
XCTAssertEqual(plannedJobs.count, driver.targetTriple.isWindows ? 5 : 6)
26842695
XCTAssertFalse(plannedJobs.map { $0.kind }.contains(.generateDSYM))
26852696
}
26862697

2687-
XCTAssertTrue(cmd.contains(.path(try VirtualPath(path: "Test"))))
2698+
XCTAssertTrue(cmd.contains(.path(try VirtualPath(path: "Test\(executableFileSuffix)"))))
26882699
}
26892700
}
26902701

@@ -2866,23 +2877,23 @@ final class SwiftDriverTests: XCTestCase {
28662877
XCTAssertEqual(output,
28672878
"""
28682879
digraph Jobs {
2869-
"compile (swift-frontend)" [style=bold];
2880+
"compile (swift-frontend\(executableFileSuffix))" [style=bold];
28702881
"test.swift" [fontsize=12];
2871-
"test.swift" -> "compile (swift-frontend)" [color=blue];
2882+
"test.swift" -> "compile (swift-frontend\(executableFileSuffix))" [color=blue];
28722883
"test.o" [fontsize=12];
2873-
"compile (swift-frontend)" -> "test.o" [color=green];
2884+
"compile (swift-frontend\(executableFileSuffix))" -> "test.o" [color=green];
28742885
"test.swiftmodule" [fontsize=12];
2875-
"compile (swift-frontend)" -> "test.swiftmodule" [color=green];
2886+
"compile (swift-frontend\(executableFileSuffix))" -> "test.swiftmodule" [color=green];
28762887
"test.swiftdoc" [fontsize=12];
2877-
"compile (swift-frontend)" -> "test.swiftdoc" [color=green];
2878-
"mergeModule (swift-frontend)" [style=bold];
2879-
"test.swiftmodule" -> "mergeModule (swift-frontend)" [color=blue];
2880-
"mergeModule (swift-frontend)" -> "test.swiftmodule" [color=green];
2881-
"mergeModule (swift-frontend)" -> "test.swiftdoc" [color=green];
2882-
"link (\(dynamicLinker))" [style=bold];
2883-
"test.o" -> "link (\(dynamicLinker))" [color=blue];
2884-
"test" [fontsize=12];
2885-
"link (\(dynamicLinker))" -> "test" [color=green];
2888+
"compile (swift-frontend\(executableFileSuffix))" -> "test.swiftdoc" [color=green];
2889+
"mergeModule (swift-frontend\(executableFileSuffix))" [style=bold];
2890+
"test.swiftmodule" -> "mergeModule (swift-frontend\(executableFileSuffix))" [color=blue];
2891+
"mergeModule (swift-frontend\(executableFileSuffix))" -> "test.swiftmodule" [color=green];
2892+
"mergeModule (swift-frontend\(executableFileSuffix))" -> "test.swiftdoc" [color=green];
2893+
"link (\(dynamicLinker)\(executableFileSuffix))" [style=bold];
2894+
"test.o" -> "link (\(dynamicLinker)\(executableFileSuffix))" [color=blue];
2895+
"test\(executableFileSuffix)" [fontsize=12];
2896+
"link (\(dynamicLinker)\(executableFileSuffix))" -> "test\(executableFileSuffix)" [color=green];
28862897
}
28872898
28882899
""")
@@ -4108,15 +4119,28 @@ final class SwiftDriverTests: XCTestCase {
41084119

41094120
func testFrontendTargetInfoWithWorkingDirectory() throws {
41104121
do {
4122+
#if os(Windows)
4123+
var driver = try Driver(args: ["swiftc", "-typecheck", "foo.swift",
4124+
"-resource-dir", "resource/dir",
4125+
"-sdk", "sdk",
4126+
"-working-directory", "C:\\absolute\\path"])
4127+
#else
41114128
var driver = try Driver(args: ["swiftc", "-typecheck", "foo.swift",
41124129
"-resource-dir", "resource/dir",
41134130
"-sdk", "sdk",
41144131
"-working-directory", "/absolute/path"])
4132+
#endif
41154133
let plannedJobs = try driver.planBuild()
41164134
let job = plannedJobs[0]
4135+
4136+
#if os(Windows)
4137+
XCTAssertTrue(job.commandLine.contains(.path(.absolute(.init("C:\\absolute\\path\\resource\\dir")))))
4138+
XCTAssertTrue(job.commandLine.contains(.path(.absolute(.init("C:\\absolute\\path\\sdk")))))
4139+
#else
41174140
XCTAssertTrue(job.commandLine.contains(.path(.absolute(.init("/absolute/path/resource/dir")))))
4118-
XCTAssertFalse(job.commandLine.contains(.path(.relative(.init("resource/dir")))))
41194141
XCTAssertTrue(job.commandLine.contains(.path(.absolute(.init("/absolute/path/sdk")))))
4142+
#endif
4143+
XCTAssertFalse(job.commandLine.contains(.path(.relative(.init("resource/dir")))))
41204144
XCTAssertFalse(job.commandLine.contains(.path(.relative(.init("sdk")))))
41214145
}
41224146
}
@@ -4152,12 +4176,17 @@ final class SwiftDriverTests: XCTestCase {
41524176
}
41534177

41544178
func testFilelist() throws {
4179+
#if os(Windows)
4180+
let triple = "x86_64-unknown-windows-msvc"
4181+
#else
4182+
let triple = "x86_64-apple-macosx10.9"
4183+
#endif
41554184
do {
4156-
var driver = try Driver(args: ["swiftc", "-emit-module", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0"])
4185+
var driver = try Driver(args: ["swiftc", "-emit-module", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", triple, "-driver-filelist-threshold=0"])
41574186
let plannedJobs = try driver.planBuild()
41584187

41594188
let jobA = plannedJobs[0]
4160-
let flagA = jobA.commandLine.firstIndex(of: .flag("-supplementary-output-file-map"))!
4189+
let flagA = try XCTUnwrap(jobA.commandLine.firstIndex(of: .flag("-supplementary-output-file-map")))
41614190
let fileListArgumentA = jobA.commandLine[jobA.commandLine.index(after: flagA)]
41624191
guard case let .path(.fileList(_, fileListA)) = fileListArgumentA else {
41634192
XCTFail("Argument wasn't a filelist")
@@ -4173,7 +4202,7 @@ final class SwiftDriverTests: XCTestCase {
41734202
XCTAssertTrue(filesA.keys.contains(.swiftSourceInfoFile))
41744203

41754204
let jobB = plannedJobs[1]
4176-
let flagB = jobB.commandLine.firstIndex(of: .flag("-supplementary-output-file-map"))!
4205+
let flagB = try XCTUnwrap(jobB.commandLine.firstIndex(of: .flag("-supplementary-output-file-map")))
41774206
let fileListArgumentB = jobB.commandLine[jobB.commandLine.index(after: flagB)]
41784207
guard case let .path(.fileList(_, fileListB)) = fileListArgumentB else {
41794208
XCTFail("Argument wasn't a filelist")
@@ -4189,7 +4218,7 @@ final class SwiftDriverTests: XCTestCase {
41894218
XCTAssertTrue(filesB.keys.contains(.swiftSourceInfoFile))
41904219

41914220
let jobC = plannedJobs[2]
4192-
let flagC = jobC.commandLine.firstIndex(of: .flag("-supplementary-output-file-map"))!
4221+
let flagC = try XCTUnwrap(jobC.commandLine.firstIndex(of: .flag("-supplementary-output-file-map")))
41934222
let fileListArgumentC = jobC.commandLine[jobC.commandLine.index(after: flagC)]
41944223
guard case let .path(.fileList(_, fileListC)) = fileListArgumentC else {
41954224
XCTFail("Argument wasn't a filelist")
@@ -4206,10 +4235,10 @@ final class SwiftDriverTests: XCTestCase {
42064235
}
42074236

42084237
do {
4209-
var driver = try Driver(args: ["swiftc", "-c", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0", "-whole-module-optimization"])
4238+
var driver = try Driver(args: ["swiftc", "-c", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", triple, "-driver-filelist-threshold=0", "-whole-module-optimization"])
42104239
let plannedJobs = try driver.planBuild()
42114240
let job = plannedJobs[0]
4212-
let inputsFlag = job.commandLine.firstIndex(of: .flag("-filelist"))!
4241+
let inputsFlag = try XCTUnwrap(job.commandLine.firstIndex(of: .flag("-filelist")))
42134242
let inputFileListArgument = job.commandLine[job.commandLine.index(after: inputsFlag)]
42144243
guard case let .path(.fileList(_, inputFileList)) = inputFileListArgument else {
42154244
XCTFail("Argument wasn't a filelist")
@@ -4221,7 +4250,7 @@ final class SwiftDriverTests: XCTestCase {
42214250
}
42224251
XCTAssertEqual(inputs, [.relative(RelativePath("a.swift")), .relative(RelativePath("b.swift")), .relative(RelativePath("c.swift"))])
42234252

4224-
let outputsFlag = job.commandLine.firstIndex(of: .flag("-output-filelist"))!
4253+
let outputsFlag = try XCTUnwrap(job.commandLine.firstIndex(of: .flag("-output-filelist")))
42254254
let outputFileListArgument = job.commandLine[job.commandLine.index(after: outputsFlag)]
42264255
guard case let .path(.fileList(_, outputFileList)) = outputFileListArgument else {
42274256
XCTFail("Argument wasn't a filelist")
@@ -4235,10 +4264,10 @@ final class SwiftDriverTests: XCTestCase {
42354264
}
42364265

42374266
do {
4238-
var driver = try Driver(args: ["swiftc", "-c", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0", "-whole-module-optimization", "-num-threads", "1"])
4267+
var driver = try Driver(args: ["swiftc", "-c", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", triple, "-driver-filelist-threshold=0", "-whole-module-optimization", "-num-threads", "1"])
42394268
let plannedJobs = try driver.planBuild()
42404269
let job = plannedJobs[0]
4241-
let outputsFlag = job.commandLine.firstIndex(of: .flag("-output-filelist"))!
4270+
let outputsFlag = try XCTUnwrap(job.commandLine.firstIndex(of: .flag("-output-filelist")))
42424271
let outputFileListArgument = job.commandLine[job.commandLine.index(after: outputsFlag)]
42434272
guard case let .path(.fileList(_, outputFileList)) = outputFileListArgument else {
42444273
XCTFail("Argument wasn't a filelist")
@@ -4252,10 +4281,10 @@ final class SwiftDriverTests: XCTestCase {
42524281
}
42534282

42544283
do {
4255-
var driver = try Driver(args: ["swiftc", "-c", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0", "-whole-module-optimization", "-num-threads", "1", "-embed-bitcode"])
4284+
var driver = try Driver(args: ["swiftc", "-c", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", triple, "-driver-filelist-threshold=0", "-whole-module-optimization", "-num-threads", "1", "-embed-bitcode"])
42564285
let plannedJobs = try driver.planBuild()
42574286
let job = plannedJobs[0]
4258-
let outputsFlag = job.commandLine.firstIndex(of: .flag("-output-filelist"))!
4287+
let outputsFlag = try XCTUnwrap(job.commandLine.firstIndex(of: .flag("-output-filelist")))
42594288
let outputFileListArgument = job.commandLine[job.commandLine.index(after: outputsFlag)]
42604289
guard case let .path(.fileList(_, outputFileList)) = outputFileListArgument else {
42614290
XCTFail("Argument wasn't a filelist")
@@ -4269,10 +4298,10 @@ final class SwiftDriverTests: XCTestCase {
42694298
}
42704299

42714300
do {
4272-
var driver = try Driver(args: ["swiftc", "-emit-library", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0"])
4301+
var driver = try Driver(args: ["swiftc", "-emit-library", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", triple, "-driver-filelist-threshold=0"])
42734302
let plannedJobs = try driver.planBuild()
42744303
let job = plannedJobs[3]
4275-
let inputsFlag = job.commandLine.firstIndex(of: .flag("-filelist"))!
4304+
let inputsFlag = try XCTUnwrap(job.commandLine.firstIndex(of: .flag("-filelist")))
42764305
let inputFileListArgument = job.commandLine[job.commandLine.index(after: inputsFlag)]
42774306
guard case let .path(.fileList(_, inputFileList)) = inputFileListArgument else {
42784307
XCTFail("Argument wasn't a filelist")
@@ -4286,10 +4315,10 @@ final class SwiftDriverTests: XCTestCase {
42864315
}
42874316

42884317
do {
4289-
var driver = try Driver(args: ["swiftc", "-emit-library", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", "x86_64-apple-macosx10.9", "-driver-filelist-threshold=0", "-whole-module-optimization", "-num-threads", "1"])
4318+
var driver = try Driver(args: ["swiftc", "-emit-library", "./a.swift", "./b.swift", "./c.swift", "-module-name", "main", "-target", triple, "-driver-filelist-threshold=0", "-whole-module-optimization", "-num-threads", "1"])
42904319
let plannedJobs = try driver.planBuild()
42914320
let job = plannedJobs[1]
4292-
let inputsFlag = job.commandLine.firstIndex(of: .flag("-filelist"))!
4321+
let inputsFlag = try XCTUnwrap(job.commandLine.firstIndex(of: .flag("-filelist")))
42934322
let inputFileListArgument = job.commandLine[job.commandLine.index(after: inputsFlag)]
42944323
guard case let .path(.fileList(_, inputFileList)) = inputFileListArgument else {
42954324
XCTFail("Argument wasn't a filelist")
@@ -4307,7 +4336,7 @@ final class SwiftDriverTests: XCTestCase {
43074336
let plannedJobs = try driver.planBuild()
43084337

43094338
let jobA = plannedJobs[0]
4310-
let flagA = jobA.commandLine.firstIndex(of: .flag("-supplementary-output-file-map"))!
4339+
let flagA = try XCTUnwrap(jobA.commandLine.firstIndex(of: .flag("-supplementary-output-file-map")))
43114340
let fileListArgumentA = jobA.commandLine[jobA.commandLine.index(after: flagA)]
43124341
guard case let .path(.fileList(_, fileListA)) = fileListArgumentA else {
43134342
XCTFail("Argument wasn't a filelist")
@@ -4320,7 +4349,7 @@ final class SwiftDriverTests: XCTestCase {
43204349
XCTAssertEqual(mapA.entries, [.relative(.init("a.swift")): [:]])
43214350

43224351
let jobB = plannedJobs[1]
4323-
let flagB = jobB.commandLine.firstIndex(of: .flag("-supplementary-output-file-map"))!
4352+
let flagB = try XCTUnwrap(jobB.commandLine.firstIndex(of: .flag("-supplementary-output-file-map")))
43244353
let fileListArgumentB = jobB.commandLine[jobB.commandLine.index(after: flagB)]
43254354
guard case let .path(.fileList(_, fileListB)) = fileListArgumentB else {
43264355
XCTFail("Argument wasn't a filelist")
@@ -4338,7 +4367,7 @@ final class SwiftDriverTests: XCTestCase {
43384367
let plannedJobs = try driver.planBuild()
43394368

43404369
let jobA = plannedJobs[0]
4341-
let flagA = jobA.commandLine.firstIndex(of: .flag("-supplementary-output-file-map"))!
4370+
let flagA = try XCTUnwrap(jobA.commandLine.firstIndex(of: .flag("-supplementary-output-file-map")))
43424371
let fileListArgumentA = jobA.commandLine[jobA.commandLine.index(after: flagA)]
43434372
guard case let .path(.fileList(_, fileListA)) = fileListArgumentA else {
43444373
XCTFail("Argument wasn't a filelist")

Tests/SwiftDriverTests/XCTestManifests.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,9 @@ extension NonincrementalCompilationTests {
116116
// DO NOT MODIFY: This is autogenerated, use:
117117
// `swift test --generate-linuxmain`
118118
// to regenerate.
119+
#if os(Windows)
120+
static let __allTests__NonincrementalCompilationTests: [(String, (XCTestCase) -> () -> Void)] = []
121+
#else
119122
static let __allTests__NonincrementalCompilationTests = [
120123
("testBuildRecordReading", testBuildRecordReading),
121124
("testDateConversion", testDateConversion),
@@ -126,6 +129,7 @@ extension NonincrementalCompilationTests {
126129
("testReadComplexSourceFileDependencyGraph", testReadComplexSourceFileDependencyGraph),
127130
("testShowJobLifecycleAndIncremental", testShowJobLifecycleAndIncremental),
128131
]
132+
#endif
129133
}
130134

131135
extension ParsableMessageTests {

0 commit comments

Comments
 (0)