Skip to content

Commit 4a50ede

Browse files
committed
Tests: adjust the BuildPlanTests for Windows
The Windows toolchain does not find the default linker by default as that requires the sourcing of Visual Studio's scripts to setup the environment. Adjust the tests to explicitly specify the linker to ensure that the toolchain is usable on Windows without constraint on the environment. While in the area, adjust the expectations to account for platform path spellings. This allows us to pass these tests on Windows now. Adjust the path representation to account for Windows to allow the matching to succeed.
1 parent ada0e31 commit 4a50ede

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

Tests/BuildTests/BuildPlanTests.swift

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3536,7 +3536,9 @@ final class BuildPlanTests: XCTestCase {
35363536
toolset: .init(
35373537
knownTools: [
35383538
.cCompiler: .init(extraCLIOptions: ["-I/fake/sdk/sysroot", "-clang-flag-from-json"]),
3539-
.swiftCompiler: .init(extraCLIOptions: ["-swift-flag-from-json"])
3539+
.swiftCompiler: .init(extraCLIOptions: ["-swift-flag-from-json"]),
3540+
.librarian: .init(path: "/fake/toolchain/usr/bin/lib"),
3541+
.linker: .init(path: "/fake/toolchain/usr/bin/lnk"),
35403542
],
35413543
rootPaths: try UserToolchain.default.destination.toolset.rootPaths
35423544
),
@@ -3567,7 +3569,18 @@ final class BuildPlanTests: XCTestCase {
35673569
XCTAssertMatch(try lib.basicArguments(isCXX: false), args)
35683570

35693571
let exe = try result.target(for: "exe").swiftTarget().compileArguments()
3570-
XCTAssertMatch(exe, ["-module-cache-path", "\(buildPath.appending(components: "ModuleCache"))", .anySequence, "-swift-flag-from-json", "-g", "-swift-command-line-flag", .anySequence, "-Xcc", "-clang-flag-from-json", "-Xcc", "-g", "-Xcc", "-clang-command-line-flag"])
3572+
XCTAssertMatch(exe, [
3573+
"-module-cache-path",
3574+
"\(buildPath.appending(components: "ModuleCache"))",
3575+
.anySequence,
3576+
"-swift-flag-from-json",
3577+
.anySequence,
3578+
"-swift-command-line-flag",
3579+
.anySequence,
3580+
"-Xcc", "-clang-flag-from-json",
3581+
.anySequence,
3582+
"-Xcc", "-clang-command-line-flag"
3583+
])
35713584
}
35723585

35733586
func testUserToolchainWithToolsetCompileFlags() throws {
@@ -3757,7 +3770,10 @@ final class BuildPlanTests: XCTestCase {
37573770
properties: .init(
37583771
sdkRootPath: "/fake/sdk",
37593772
includeSearchPaths: [sdkIncludeSearchPath],
3760-
librarySearchPaths: [sdkLibrarySearchPath]))
3773+
librarySearchPaths: [sdkLibrarySearchPath]),
3774+
toolset: .init(knownTools: [
3775+
.swiftCompiler: .init(extraCLIOptions: ["-use-ld=lld"]),
3776+
]))
37613777
let toolchain = try UserToolchain(destination: destination)
37623778
let buildParameters = mockBuildParameters(toolchain: toolchain)
37633779
let result = try BuildPlanResult(plan: BuildPlan(
@@ -3770,17 +3786,17 @@ final class BuildPlanTests: XCTestCase {
37703786

37713787
// Compile C Target
37723788
let cLibCompileArguments = try result.target(for: "cLib").clangTarget().basicArguments(isCXX: false)
3773-
let cLibCompileArgumentsPattern: [StringPattern] = ["-I", "\(sdkIncludeSearchPath)"]
3789+
let cLibCompileArgumentsPattern: [StringPattern] = ["-I", "\(AbsolutePath(sdkIncludeSearchPath)._nativePathString(escaped: false))"]
37743790
XCTAssertMatch(cLibCompileArguments, cLibCompileArgumentsPattern)
37753791

37763792
// Compile Swift Target
37773793
let exeCompileArguments = try result.target(for: "exe").swiftTarget().compileArguments()
3778-
let exeCompileArgumentsPattern: [StringPattern] = ["-I", "\(sdkIncludeSearchPath)"]
3794+
let exeCompileArgumentsPattern: [StringPattern] = ["-I", "\(AbsolutePath(sdkIncludeSearchPath)._nativePathString(escaped: false))"]
37793795
XCTAssertMatch(exeCompileArguments, exeCompileArgumentsPattern)
37803796

37813797
// Link Product
37823798
let exeLinkArguments = try result.buildProduct(for: "exe").linkArguments()
3783-
let exeLinkArgumentsPattern: [StringPattern] = ["-L", "\(sdkIncludeSearchPath)"]
3799+
let exeLinkArgumentsPattern: [StringPattern] = ["-L", "\(AbsolutePath(sdkIncludeSearchPath)._nativePathString(escaped: false))"]
37843800
XCTAssertMatch(exeLinkArguments, exeLinkArgumentsPattern)
37853801
}
37863802

@@ -4750,7 +4766,7 @@ final class BuildPlanTests: XCTestCase {
47504766

47514767
let yamlContents: String = try fs.readFileContents(yaml)
47524768
XCTAssertMatch(yamlContents, .contains("""
4753-
inputs: ["/Pkg/Snippets/ASnippet.swift","/Pkg/.build/debug/Lib.swiftmodule"
4769+
inputs: ["\(AbsolutePath("/Pkg/Snippets/ASnippet.swift")._nativePathString(escaped: true))","\(AbsolutePath("/Pkg/.build/debug/Lib.swiftmodule")._nativePathString(escaped: true))"
47544770
"""))
47554771

47564772
}

0 commit comments

Comments
 (0)