diff --git a/Sources/XcodeGenKit/SchemeGenerator.swift b/Sources/XcodeGenKit/SchemeGenerator.swift index d98754ac..cfbc9a30 100644 --- a/Sources/XcodeGenKit/SchemeGenerator.swift +++ b/Sources/XcodeGenKit/SchemeGenerator.swift @@ -194,10 +194,18 @@ public class SchemeGenerator { let launchVariables = scheme.run.flatMap { $0.environmentVariables.isEmpty ? nil : $0.environmentVariables } let profileVariables = scheme.profile.flatMap { $0.environmentVariables.isEmpty ? nil : $0.environmentVariables } + var testPlans: [XCScheme.TestPlanReference]? + if let plans = scheme.test?.testPlans, !plans.isEmpty { + testPlans = plans.enumerated().map { index, path in + .init(reference: "container:\(path)", default: index == 0) + } + } + let testAction = XCScheme.TestAction( buildConfiguration: scheme.test?.config ?? defaultDebugConfig.name, macroExpansion: buildableReference, testables: testables, + testPlans: testPlans, preActions: scheme.test?.preActions.map(getExecutionAction) ?? [], postActions: scheme.test?.postActions.map(getExecutionAction) ?? [], selectedDebuggerIdentifier: (scheme.test?.debugEnabled ?? Scheme.Test.debugEnabledDefault) ? XCScheme.defaultDebugger : "", diff --git a/Tests/XcodeGenKitTests/SchemeGeneratorTests.swift b/Tests/XcodeGenKitTests/SchemeGeneratorTests.swift index 5cac0708..cf5bfc3a 100644 --- a/Tests/XcodeGenKitTests/SchemeGeneratorTests.swift +++ b/Tests/XcodeGenKitTests/SchemeGeneratorTests.swift @@ -311,6 +311,30 @@ class SchemeGeneratorTests: XCTestCase { try expect(buildableReference?.blueprintName) == "ExternalTarget" try expect(buildableReference?.referencedContainer) == "container:\(externalProject.string)" } + + $0.it("generate test plans ") { + let scheme = Scheme( + name: "TestScheme", + build: Scheme.Build(targets: [buildTarget]), + test: Scheme.Test(config: "Debug", testPlans: [ + "Path/TestPlan.xctestplan", + "Path/TestPlan2.xctestplan", + ]) + ) + let project = Project( + name: "test", + targets: [app, framework], + schemes: [scheme] + ) + let xcodeProject = try project.generateXcodeProject() + + let xcscheme = try unwrap(xcodeProject.sharedData?.schemes.first) + + try expect(xcscheme.testAction?.testPlans) == [ + XCScheme.TestPlanReference(reference: "container:Path/TestPlan.xctestplan", default: true), + XCScheme.TestPlanReference(reference: "container:Path/TestPlan2.xctestplan", default: false), + ] + } } } }