Skip to content

Commit 132e306

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 132e306

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

Tests/BuildTests/BuildPlanTests.swift

Lines changed: 24 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,11 @@ 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+
.librarian: .init(path: "/fake/toolchain/bin/lib"),
3776+
.linker: .init(path: "/fake/toolchain/bin/lnk"),
3777+
]))
37613778
let toolchain = try UserToolchain(destination: destination)
37623779
let buildParameters = mockBuildParameters(toolchain: toolchain)
37633780
let result = try BuildPlanResult(plan: BuildPlan(
@@ -3770,17 +3787,17 @@ final class BuildPlanTests: XCTestCase {
37703787

37713788
// Compile C Target
37723789
let cLibCompileArguments = try result.target(for: "cLib").clangTarget().basicArguments(isCXX: false)
3773-
let cLibCompileArgumentsPattern: [StringPattern] = ["-I", "\(sdkIncludeSearchPath)"]
3790+
let cLibCompileArgumentsPattern: [StringPattern] = ["-I", "\(AbsolutePath(sdkIncludeSearchPath)._nativePathString(escaped: false))"]
37743791
XCTAssertMatch(cLibCompileArguments, cLibCompileArgumentsPattern)
37753792

37763793
// Compile Swift Target
37773794
let exeCompileArguments = try result.target(for: "exe").swiftTarget().compileArguments()
3778-
let exeCompileArgumentsPattern: [StringPattern] = ["-I", "\(sdkIncludeSearchPath)"]
3795+
let exeCompileArgumentsPattern: [StringPattern] = ["-I", "\(AbsolutePath(sdkIncludeSearchPath)._nativePathString(escaped: false))"]
37793796
XCTAssertMatch(exeCompileArguments, exeCompileArgumentsPattern)
37803797

37813798
// Link Product
37823799
let exeLinkArguments = try result.buildProduct(for: "exe").linkArguments()
3783-
let exeLinkArgumentsPattern: [StringPattern] = ["-L", "\(sdkIncludeSearchPath)"]
3800+
let exeLinkArgumentsPattern: [StringPattern] = ["-L", "\(AbsolutePath(sdkIncludeSearchPath)._nativePathString(escaped: false))"]
37843801
XCTAssertMatch(exeLinkArguments, exeLinkArgumentsPattern)
37853802
}
37863803

@@ -4750,7 +4767,7 @@ final class BuildPlanTests: XCTestCase {
47504767

47514768
let yamlContents: String = try fs.readFileContents(yaml)
47524769
XCTAssertMatch(yamlContents, .contains("""
4753-
inputs: ["/Pkg/Snippets/ASnippet.swift","/Pkg/.build/debug/Lib.swiftmodule"
4770+
inputs: ["\(AbsolutePath("/Pkg/Snippets/ASnippet.swift")._nativePathString(escaped: true))","\(AbsolutePath("/Pkg/.build/debug/Lib.swiftmodule")._nativePathString(escaped: true))"
47544771
"""))
47554772

47564773
}

0 commit comments

Comments
 (0)