@@ -34,12 +34,13 @@ extension BuildPlan {
34
34
_ fileSystem: FileSystem ,
35
35
_ observabilityScope: ObservabilityScope
36
36
) 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 " )
42
42
}
43
+
43
44
let isEntryPointPathSpecifiedExplicitly = explicitlySpecifiedPath != nil
44
45
45
46
var isDiscoveryEnabledRedundantly = explicitlyEnabledDiscovery && !isEntryPointPathSpecifiedExplicitly
@@ -115,7 +116,7 @@ extension BuildPlan {
115
116
resolvedTargetDependencies: [ ResolvedModule . Dependency ]
116
117
) throws -> SwiftModuleBuildDescription {
117
118
let entryPointDerivedDir = destinationBuildParameters. buildPath. appending ( components: " \( testProduct. name) .derived " )
118
- let entryPointMainFileName = TestEntryPointTool . mainFileName
119
+ let entryPointMainFileName = TestEntryPointTool . mainFileName ( for : destinationBuildParameters . testingParameters . library )
119
120
let entryPointMainFile = entryPointDerivedDir. appending ( component: entryPointMainFileName)
120
121
let entryPointSources = Sources ( paths: [ entryPointMainFile] , root: entryPointDerivedDir)
121
122
@@ -152,17 +153,18 @@ extension BuildPlan {
152
153
let swiftTargetDependencies : [ Module . Dependency ]
153
154
let resolvedTargetDependencies : [ ResolvedModule . Dependency ]
154
155
155
- if destinationBuildParameters. triple. isDarwin ( ) {
156
- discoveryTargets = nil
157
- swiftTargetDependencies = [ ]
158
- resolvedTargetDependencies = [ ]
159
- } else {
156
+ switch destinationBuildParameters. testingParameters. library {
157
+ case . xctest:
160
158
discoveryTargets = try generateDiscoveryTargets ( )
161
159
swiftTargetDependencies = [ . module( discoveryTargets!. target, conditions: [ ] ) ]
162
160
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: [ ] ) }
163
165
}
164
166
165
- if !destinationBuildParameters . triple . isDarwin ( ) , let entryPointResolvedTarget = testProduct. testEntryPointModule {
167
+ if let entryPointResolvedTarget = testProduct. testEntryPointModule {
166
168
if isEntryPointPathSpecifiedExplicitly || explicitlyEnabledDiscovery {
167
169
if isEntryPointPathSpecifiedExplicitly {
168
170
// Allow using the explicitly-specified test entry point target, but still perform test discovery and thus declare a dependency on the discovery modules.
0 commit comments