Skip to content

Commit bb139e8

Browse files
committed
Enable strict concurrency
1 parent b16aac0 commit bb139e8

3 files changed

Lines changed: 42 additions & 16 deletions

File tree

Package.swift

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,37 +17,59 @@ let products: [PackageDescription.Product] = [
1717
)
1818
]
1919

20+
let flags: [PackageDescription.SwiftSetting] = [.enableExperimentalFeature("StrictConcurrency")]
21+
2022
let targets: [PackageDescription.Target] = [
2123
.executableTarget(
2224
name: "xcode-selective-test",
2325
dependencies: ["SelectiveTestingCore",
24-
.product(name: "ArgumentParser", package: "swift-argument-parser")]
26+
.product(name: "ArgumentParser", package: "swift-argument-parser")],
27+
swiftSettings: flags
2528
),
2629
.target(name: "SelectiveTestingCore",
2730
dependencies: ["DependencyCalculator",
2831
"TestConfigurator",
2932
"Git",
3033
"PathKit",
3134
"Yams",
32-
.product(name: "ArgumentParser", package: "swift-argument-parser")]),
35+
.product(name: "ArgumentParser", package: "swift-argument-parser")],
36+
swiftSettings: flags,
37+
),
3338
.target(name: "DependencyCalculator",
34-
dependencies: ["Workspace", "PathKit", "Git", .product(name: "Logging", package: "swift-log")]),
39+
dependencies: ["Workspace", "PathKit", "Git", .product(name: "Logging", package: "swift-log")],
40+
swiftSettings: flags,
41+
),
3542
.target(name: "TestConfigurator",
36-
dependencies: ["Workspace", "PathKit", .product(name: "Logging", package: "swift-log")]),
43+
dependencies: [
44+
"Workspace",
45+
"PathKit",
46+
.product(name: "Logging", package: "swift-log"),
47+
.product(name: "ArgumentParser", package: "swift-argument-parser")
48+
],
49+
swiftSettings: flags,
50+
),
3751
.target(name: "Workspace",
38-
dependencies: ["XcodeProj", .product(name: "Logging", package: "swift-log")]),
52+
dependencies: ["XcodeProj", .product(name: "Logging", package: "swift-log")],
53+
swiftSettings: flags,
54+
),
3955
.target(name: "Git",
40-
dependencies: ["SelectiveTestShell", "PathKit", .product(name: "Logging", package: "swift-log")]),
41-
.target(name: "SelectiveTestShell"),
56+
dependencies: ["SelectiveTestShell", "PathKit", .product(name: "Logging", package: "swift-log")],
57+
swiftSettings: flags,
58+
),
59+
.target(name: "SelectiveTestShell",
60+
swiftSettings: flags,
61+
),
4262
.testTarget(
4363
name: "SelectiveTestingTests",
4464
dependencies: ["xcode-selective-test", "PathKit"],
45-
resources: [.copy("ExampleProject")]
65+
resources: [.copy("ExampleProject")],
66+
swiftSettings: flags
4667
),
4768
.testTarget(
4869
name: "DependencyCalculatorTests",
4970
dependencies: ["DependencyCalculator", "Workspace", "PathKit", "SelectiveTestingCore"],
50-
resources: [.copy("ExamplePackages")]
71+
resources: [.copy("ExamplePackages")],
72+
swiftSettings: flags
5173
),
5274
.plugin(
5375
name: "SelectiveTestingPlugin",

Plugins/SelectiveTestingPlugin/SelectiveTestingPlugin.swift

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,19 +48,23 @@ struct SelectiveTestingPlugin: CommandPlugin {
4848
}
4949

5050
if !toolArguments.contains(where: { $0 == "--test-plan" }) {
51-
let testPlans = context.xcodeProject.filePaths.filter {
52-
$0.extension == "xctestplan"
51+
let allFiles = context.xcodeProject.targets.reduce([]) { partialResult, target in
52+
partialResult + target.inputFiles
53+
}
54+
55+
let testPlans = allFiles.filter {
56+
$0.url.pathExtension == "xctestplan"
5357
}
5458

5559
if !testPlans.isEmpty {
5660
if testPlans.count == 1 {
57-
print("Using \(testPlans[0].string) test plan")
61+
print("Using \(testPlans[0].url.path()) test plan")
5862
} else {
5963
print("Using \(testPlans.count) test plans")
6064
}
6165

6266
for testPlan in testPlans {
63-
toolArguments.append(contentsOf: ["--test-plan", testPlan.string])
67+
toolArguments.append(contentsOf: ["--test-plan", testPlan.url.path()])
6468
}
6569
}
6670
}

Sources/Workspace/Target.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
//
44

55
import Foundation
6-
import PathKit
6+
@preconcurrency import PathKit
77
import XcodeProj
88

99
extension PBXNativeTarget {
@@ -17,8 +17,8 @@ extension PBXNativeTarget {
1717
}
1818
}
1919

20-
public struct TargetIdentity: Hashable {
21-
public enum TargetType {
20+
public struct TargetIdentity: Hashable, Sendable {
21+
public enum TargetType: Sendable {
2222
case project
2323
case package
2424
}

0 commit comments

Comments
 (0)