Skip to content

Commit b380a7d

Browse files
committed
Fixes many tests (plus skips) to get more tests running on windows
#8606
1 parent f4035c1 commit b380a7d

34 files changed

+297
-214
lines changed
Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,3 @@
1-
#if os(macOS) || os(iOS)
2-
import Darwin
3-
#elseif canImport(Glibc)
4-
import Glibc
5-
#elseif canImport(Musl)
6-
import Musl
7-
#elseif canImport(Bionic)
8-
import Bionic
9-
#endif
101

112
public extension Collection {
123
func shuffle() -> [Iterator.Element] {
@@ -24,15 +15,13 @@ public extension MutableCollection {
2415
guard c > 1 else { return }
2516

2617
for (firstUnshuffled, unshuffledCount) in zip(indices, stride(from: c, to: 1, by: -1)) {
27-
#if os(macOS) || os(iOS)
28-
let d = arc4random_uniform(numericCast(unshuffledCount))
29-
#else
30-
let d = numericCast(random()) % unshuffledCount
31-
#endif
32-
let i = index(firstUnshuffled, offsetBy: numericCast(d))
18+
var g = SystemRandomNumberGenerator()
19+
let d = Int.random(in: 1...unshuffledCount, using: &g)
20+
let i = index(firstUnshuffled, offsetBy: d)
3321
swapAt(firstUnshuffled, i)
3422
}
3523
}
3624
}
3725

26+
3827
public let shuffle = false

Fixtures/Miscellaneous/AtMainSupport/Package.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ let package = Package(
99
.executable(name: "SwiftExecMultiFile", targets: ["SwiftExecMultiFile"]),
1010
],
1111
targets: [
12-
.executableTarget(name: "ClangExecSingleFile"),
12+
.executableTarget(name: "ClangExecSingleFile",
13+
linkerSettings: [
14+
.linkedLibrary("swiftCore", .when(platforms: [.windows])), // for swift_addNewDSOImage
15+
]),
1316
.executableTarget(name: "SwiftExecSingleFile"),
1417
.executableTarget(name: "SwiftExecMultiFile"),
1518
]

Fixtures/Miscellaneous/EchoExecutable/Sources/secho/main.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44
import Musl
55
#elseif canImport(Android)
66
import Android
7-
#else
7+
#elseif canImport(Darwin.C)
88
import Darwin.C
9+
#elseif canImport(ucrt)
10+
import ucrt
11+
let PATH_MAX = 260
12+
typealias Int = Int32
913
#endif
1014

1115
let cwd = getcwd(nil, Int(PATH_MAX))
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
echo sentinel
2+
echo %*
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"debugger": { "path": "echo.bat" },
3+
"testRunner": { "path": "echo.bat" },
4+
"schemaVersion" : "1.0",
5+
"rootPath" : "."
6+
}

Fixtures/Miscellaneous/PluginGeneratedResources/Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version: 5.7
1+
// swift-tools-version: 6.0
22

33
import PackageDescription
44

Fixtures/Miscellaneous/PluginGeneratedResources/Plugins/Generator/plugin.swift

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
import PackagePlugin
2+
import Foundation
23

34
#if os(Android)
45
let touchExe = "/system/bin/touch"
6+
let touchArgs: [String] = []
7+
#elseif os(Windows)
8+
let touchExe = "C:/Windows/System32/cmd.exe"
9+
let touchArgs = ["/c", "copy", "NUL"]
510
#else
611
let touchExe = "/usr/bin/touch"
12+
let touchArgs: [String] = []
713
#endif
814

915
@main
@@ -12,9 +18,9 @@ struct GeneratorPlugin: BuildToolPlugin {
1218
return [
1319
.prebuildCommand(
1420
displayName: "Generating empty file",
15-
executable: .init(touchExe),
16-
arguments: [context.pluginWorkDirectory.appending("best.txt")],
17-
outputFilesDirectory: context.pluginWorkDirectory
21+
executable: .init(fileURLWithPath: touchExe),
22+
arguments: touchArgs + [String(cString: (context.pluginWorkDirectoryURL.appending(path: "best.txt") as NSURL).fileSystemRepresentation)],
23+
outputFilesDirectory: context.pluginWorkDirectoryURL
1824
)
1925
]
2026
}

Fixtures/Miscellaneous/TestableExe/Package.swift

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,23 @@ let package = Package(
55
name: "TestableExe",
66
targets: [
77
.executableTarget(
8-
name: "TestableExe1"
8+
name: "TestableExe1",
9+
linkerSettings: [
10+
.linkedLibrary("swiftCore", .when(platforms: [.windows])), // for swift_addNewDSOImage
11+
]
912
),
1013
.executableTarget(
11-
name: "TestableExe2"
14+
name: "TestableExe2",
15+
linkerSettings: [
16+
.linkedLibrary("swiftCore", .when(platforms: [.windows])), // for swift_addNewDSOImage
17+
]
18+
1219
),
1320
.executableTarget(
14-
name: "TestableExe3"
21+
name: "TestableExe3",
22+
linkerSettings: [
23+
.linkedLibrary("swiftCore", .when(platforms: [.windows])), // for swift_addNewDSOImage
24+
]
1525
),
1626
.testTarget(
1727
name: "TestableExeTests",

Package.swift

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -946,6 +946,13 @@ let package = Package(
946946
dependencies: ["XCBuildSupport", "_InternalTestSupport", "_InternalBuildTestSupport"],
947947
exclude: ["Inputs/Foo.pc"]
948948
),
949+
.testTarget(
950+
name: "FunctionalPerformanceTests",
951+
dependencies: [
952+
"swift-package-manager",
953+
"_InternalTestSupport",
954+
]
955+
),
949956
// Examples (These are built to ensure they stay up to date with the API.)
950957
.executableTarget(
951958
name: "package-info",
@@ -964,19 +971,6 @@ package.targets.append(contentsOf: [
964971
])
965972
#endif
966973

967-
// Workaround SwiftPM's attempt to link in executables which does not work on all
968-
// platforms.
969-
#if !os(Windows)
970-
package.targets.append(contentsOf: [
971-
.testTarget(
972-
name: "FunctionalPerformanceTests",
973-
dependencies: [
974-
"swift-package-manager",
975-
"_InternalTestSupport",
976-
]
977-
),
978-
])
979-
980974
// rdar://101868275 "error: cannot find 'XCTAssertEqual' in scope" can affect almost any functional test, so we flat out
981975
// disable them all until we know what is going on
982976
if ProcessInfo.processInfo.environment["SWIFTCI_DISABLE_SDK_DEPENDENT_TESTS"] == nil {
@@ -989,7 +983,6 @@ if ProcessInfo.processInfo.environment["SWIFTCI_DISABLE_SDK_DEPENDENT_TESTS"] ==
989983
"_InternalTestSupport",
990984
]
991985
),
992-
993986
.executableTarget(
994987
name: "dummy-swiftc",
995988
dependencies: [
@@ -1020,7 +1013,6 @@ if ProcessInfo.processInfo.environment["SWIFTCI_DISABLE_SDK_DEPENDENT_TESTS"] ==
10201013
),
10211014
])
10221015
}
1023-
#endif
10241016

10251017

10261018
func swiftSyntaxDependencies(_ names: [String]) -> [Target.Dependency] {

Sources/Build/LLBuildProgressTracker.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,9 +559,14 @@ private struct CommandTaskTracker {
559559
}
560560

561561
private func progressText(of command: SPMLLBuild.Command, targetName: String?) -> String {
562+
#if os(Windows)
563+
let pathSep: Character = "\\"
564+
#else
565+
let pathSep: Character = "/"
566+
#endif
562567
// Transforms descriptions like "Linking ./.build/x86_64-apple-macosx/debug/foo" into "Linking foo".
563568
if let firstSpaceIndex = command.description.firstIndex(of: " "),
564-
let lastDirectorySeparatorIndex = command.description.lastIndex(of: "/")
569+
let lastDirectorySeparatorIndex = command.description.lastIndex(of: pathSep)
565570
{
566571
let action = command.description[..<firstSpaceIndex]
567572
let fileNameStartIndex = command.description.index(after: lastDirectorySeparatorIndex)

0 commit comments

Comments
 (0)