Skip to content

Commit de9cf32

Browse files
authored
Revert #7766 and #7783. (#7788)
Revert #7766 and #7783, merged prematurely by mistake.
1 parent 6a4029e commit de9cf32

21 files changed

+574
-482
lines changed

Sources/Build/BuildManifest/LLBuildManifestBuilder.swift

+6-2
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,9 @@ public class LLBuildManifestBuilder {
112112
}
113113
}
114114

115-
try self.addTestDiscoveryGenerationCommand()
115+
if self.plan.destinationBuildParameters.testingParameters.library == .xctest {
116+
try self.addTestDiscoveryGenerationCommand()
117+
}
116118
try self.addTestEntryPointGenerationCommand()
117119

118120
// Create command for all products in the plan.
@@ -308,7 +310,9 @@ extension LLBuildManifestBuilder {
308310

309311
let outputs = testEntryPointTarget.target.sources.paths
310312

311-
let mainFileName = TestEntryPointTool.mainFileName
313+
let mainFileName = TestEntryPointTool.mainFileName(
314+
for: self.plan.destinationBuildParameters.testingParameters.library
315+
)
312316
guard let mainOutput = (outputs.first { $0.basename == mainFileName }) else {
313317
throw InternalError("main output (\(mainFileName)) not found")
314318
}

Sources/Build/BuildPlan/BuildPlan+Product.swift

+4-2
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,10 @@ extension BuildPlan {
275275
}
276276

277277
// Add derived test targets, if necessary
278-
if product.type == .test, let derivedTestTargets = derivedTestTargetsMap[product.id] {
279-
staticTargets.append(contentsOf: derivedTestTargets)
278+
if buildParameters.testingParameters.testProductStyle.requiresAdditionalDerivedTestTargets {
279+
if product.type == .test, let derivedTestTargets = derivedTestTargetsMap[product.id] {
280+
staticTargets.append(contentsOf: derivedTestTargets)
281+
}
280282
}
281283

282284
return (linkLibraries, staticTargets, systemModules, libraryBinaryPaths, providedLibraries, availableTools)

Sources/Build/BuildPlan/BuildPlan+Test.swift

+14-12
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,13 @@ extension BuildPlan {
3434
_ fileSystem: FileSystem,
3535
_ observabilityScope: ObservabilityScope
3636
) throws -> [(product: ResolvedProduct, discoveryTargetBuildDescription: SwiftModuleBuildDescription?, entryPointTargetBuildDescription: SwiftModuleBuildDescription)] {
37-
var explicitlyEnabledDiscovery = false
38-
var explicitlySpecifiedPath: AbsolutePath?
39-
if case let .entryPointExecutable(caseExplicitlyEnabledDiscovery, caseExplicitlySpecifiedPath) = destinationBuildParameters.testingParameters.testProductStyle {
40-
explicitlyEnabledDiscovery = caseExplicitlyEnabledDiscovery
41-
explicitlySpecifiedPath = caseExplicitlySpecifiedPath
37+
guard destinationBuildParameters.testingParameters.testProductStyle.requiresAdditionalDerivedTestTargets,
38+
case .entryPointExecutable(let explicitlyEnabledDiscovery, let explicitlySpecifiedPath) =
39+
destinationBuildParameters.testingParameters.testProductStyle
40+
else {
41+
throw InternalError("makeTestManifestTargets should not be used for build plan which does not require additional derived test targets")
4242
}
43+
4344
let isEntryPointPathSpecifiedExplicitly = explicitlySpecifiedPath != nil
4445

4546
var isDiscoveryEnabledRedundantly = explicitlyEnabledDiscovery && !isEntryPointPathSpecifiedExplicitly
@@ -115,7 +116,7 @@ extension BuildPlan {
115116
resolvedTargetDependencies: [ResolvedModule.Dependency]
116117
) throws -> SwiftModuleBuildDescription {
117118
let entryPointDerivedDir = destinationBuildParameters.buildPath.appending(components: "\(testProduct.name).derived")
118-
let entryPointMainFileName = TestEntryPointTool.mainFileName
119+
let entryPointMainFileName = TestEntryPointTool.mainFileName(for: destinationBuildParameters.testingParameters.library)
119120
let entryPointMainFile = entryPointDerivedDir.appending(component: entryPointMainFileName)
120121
let entryPointSources = Sources(paths: [entryPointMainFile], root: entryPointDerivedDir)
121122

@@ -152,17 +153,18 @@ extension BuildPlan {
152153
let swiftTargetDependencies: [Module.Dependency]
153154
let resolvedTargetDependencies: [ResolvedModule.Dependency]
154155

155-
if destinationBuildParameters.triple.isDarwin() {
156-
discoveryTargets = nil
157-
swiftTargetDependencies = []
158-
resolvedTargetDependencies = []
159-
} else {
156+
switch destinationBuildParameters.testingParameters.library {
157+
case .xctest:
160158
discoveryTargets = try generateDiscoveryTargets()
161159
swiftTargetDependencies = [.module(discoveryTargets!.target, conditions: [])]
162160
resolvedTargetDependencies = [.module(discoveryTargets!.resolved, conditions: [])]
161+
case .swiftTesting:
162+
discoveryTargets = nil
163+
swiftTargetDependencies = testProduct.modules.map { .module($0.underlying, conditions: []) }
164+
resolvedTargetDependencies = testProduct.modules.map { .module($0, conditions: []) }
163165
}
164166

165-
if !destinationBuildParameters.triple.isDarwin(), let entryPointResolvedTarget = testProduct.testEntryPointModule {
167+
if let entryPointResolvedTarget = testProduct.testEntryPointModule {
166168
if isEntryPointPathSpecifiedExplicitly || explicitlyEnabledDiscovery {
167169
if isEntryPointPathSpecifiedExplicitly {
168170
// Allow using the explicitly-specified test entry point target, but still perform test discovery and thus declare a dependency on the discovery modules.

Sources/Build/BuildPlan/BuildPlan.swift

+22-20
Original file line numberDiff line numberDiff line change
@@ -473,29 +473,31 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
473473
}
474474

475475
// Plan the derived test targets, if necessary.
476-
let derivedTestTargets = try Self.makeDerivedTestTargets(
477-
testProducts: productMap.values.filter {
478-
$0.product.type == .test
479-
},
480-
destinationBuildParameters: destinationBuildParameters,
481-
toolsBuildParameters: toolsBuildParameters,
482-
shouldDisableSandbox: self.shouldDisableSandbox,
483-
self.fileSystem,
484-
self.observabilityScope
485-
)
486-
for item in derivedTestTargets {
487-
var derivedTestTargets = [item.entryPointTargetBuildDescription.target]
488-
489-
targetMap[item.entryPointTargetBuildDescription.target.id] = .swift(
490-
item.entryPointTargetBuildDescription
476+
if destinationBuildParameters.testingParameters.testProductStyle.requiresAdditionalDerivedTestTargets {
477+
let derivedTestTargets = try Self.makeDerivedTestTargets(
478+
testProducts: productMap.values.filter {
479+
$0.product.type == .test
480+
},
481+
destinationBuildParameters: destinationBuildParameters,
482+
toolsBuildParameters: toolsBuildParameters,
483+
shouldDisableSandbox: self.shouldDisableSandbox,
484+
self.fileSystem,
485+
self.observabilityScope
491486
)
487+
for item in derivedTestTargets {
488+
var derivedTestTargets = [item.entryPointTargetBuildDescription.target]
492489

493-
if let discoveryTargetBuildDescription = item.discoveryTargetBuildDescription {
494-
targetMap[discoveryTargetBuildDescription.target.id] = .swift(discoveryTargetBuildDescription)
495-
derivedTestTargets.append(discoveryTargetBuildDescription.target)
496-
}
490+
targetMap[item.entryPointTargetBuildDescription.target.id] = .swift(
491+
item.entryPointTargetBuildDescription
492+
)
493+
494+
if let discoveryTargetBuildDescription = item.discoveryTargetBuildDescription {
495+
targetMap[discoveryTargetBuildDescription.target.id] = .swift(discoveryTargetBuildDescription)
496+
derivedTestTargets.append(discoveryTargetBuildDescription.target)
497+
}
497498

498-
self.derivedTestTargetsMap[item.product.id] = derivedTestTargets
499+
self.derivedTestTargetsMap[item.product.id] = derivedTestTargets
500+
}
499501
}
500502

501503
self.buildToolPluginInvocationResults = buildToolPluginInvocationResults

0 commit comments

Comments
 (0)