Skip to content

Commit

Permalink
extracts the testCoverageTargetReferences method
Browse files Browse the repository at this point in the history
  • Loading branch information
abbasmousavi committed Nov 2, 2019
1 parent 24a1492 commit 87863fb
Showing 1 changed file with 28 additions and 12 deletions.
40 changes: 28 additions & 12 deletions Sources/TuistGenerator/Generator/SchemesGenerator.swift
Expand Up @@ -145,6 +145,31 @@ final class SchemesGenerator: SchemesGenerating {
macroExpansion: nil,
testables: testables)
}

/// Generates the array of BuildableReference for targets that the
/// coverage report should be generated for them.
///
/// - Parameters:
/// - testAction: test actions.
/// - project: Project manifest.
/// - generatedProject: Generated Xcode project.
/// - Returns: Array of buildable references.
private func testCoverageTargetReferences(testAction: TestAction, project: Project, generatedProject: GeneratedProject) -> [XCScheme.BuildableReference] {

var codeCoverageTargets: [XCScheme.BuildableReference] = []
testAction.codeCoverageTargets.forEach { name in

guard let target = project.targets.first(where: { $0.name == name }) else { return }
guard let pbxTarget = generatedProject.targets[name] else { return }

let reference = self.targetBuildableReference(target: target,
pbxTarget: pbxTarget,
projectName: generatedProject.name)
codeCoverageTargets.append(reference)
}

return codeCoverageTargets
}

/// Generates the scheme test action.
///
Expand All @@ -161,18 +186,6 @@ final class SchemesGenerator: SchemesGenerating {
var testables: [XCScheme.TestableReference] = []
var preActions: [XCScheme.ExecutionAction] = []
var postActions: [XCScheme.ExecutionAction] = []
var codeCoverageTargets: [XCScheme.BuildableReference] = []

testAction.codeCoverageTargets.forEach { name in

guard let target = project.targets.first(where: { $0.name == name }) else { return }
guard let pbxTarget = generatedProject.targets[name] else { return }

let reference = self.targetBuildableReference(target: target,
pbxTarget: pbxTarget,
projectName: generatedProject.name)
codeCoverageTargets.append(reference)
}

testAction.targets.forEach { name in
guard let target = project.targets.first(where: { $0.name == name }), target.product.testsBundle else { return }
Expand Down Expand Up @@ -201,6 +214,9 @@ final class SchemesGenerator: SchemesGenerating {
args = XCScheme.CommandLineArguments(arguments: commandlineArgruments(arguments.launch))
environments = environmentVariables(arguments.environment)
}

let codeCoverageTargets = self.testCoverageTargetReferences(testAction: testAction, project: project, generatedProject: generatedProject)

let onlyGenerateCoverageForSpecifiedTargets = codeCoverageTargets.count > 0 ? true : nil

let shouldUseLaunchSchemeArgsEnv: Bool = args == nil && environments == nil
Expand Down

0 comments on commit 87863fb

Please sign in to comment.