From 3e2ebdbf1f315d32eb75304d79e565921836c94d Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Sun, 15 Sep 2019 23:37:04 +0900 Subject: [PATCH] Add test case for code coverage options --- .../SchemeGeneratorTests.swift | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/Tests/XcodeGenKitTests/SchemeGeneratorTests.swift b/Tests/XcodeGenKitTests/SchemeGeneratorTests.swift index cf82460a..65405e24 100644 --- a/Tests/XcodeGenKitTests/SchemeGeneratorTests.swift +++ b/Tests/XcodeGenKitTests/SchemeGeneratorTests.swift @@ -230,6 +230,48 @@ class SchemeGeneratorTests: XCTestCase { try expect(buildableReference?.referencedContainer) == "container:\(externalProject.string)" } + + $0.it("generate scheme with code coverage options") { + prepareXcodeProj: do { + let project = try! Project(path: fixturePath + "scheme_test/test_project.yml") + let generator = ProjectGenerator(project: project) + let writer = FileWriter(project: project) + let xcodeProject = try! generator.generateXcodeProject() + try! writer.writeXcodeProject(xcodeProject) + try! writer.writePlists() + } + let externalProject = fixturePath + "scheme_test/TestProject.xcodeproj" + let externalTarget = Scheme.BuildTarget(target: "ExternalTarget", externalProject: externalProject.string) + let scheme = Scheme( + name: "CodeCoverageScheme", + build: Scheme.Build(targets: [externalTarget]), + test: Scheme.Test( + config: "Debug", + gatherCoverageData: true, + coverageTargets: [ + Scheme.Test.CoverageTarget( + target: externalTarget.target, + externalProject: externalTarget.externalProject + ), + Scheme.Test.CoverageTarget(target: framework.name) + ] + ) + ) + let project = Project( + name: "test", + targets: [framework], + schemes: [scheme] + ) + let xcodeProject = try project.generateXcodeProject() + guard let xcscheme = xcodeProject.sharedData?.schemes.first else { + throw failure("Scheme not found") + } + try expect(xcscheme.testAction?.codeCoverageEnabled) == true + try expect(xcscheme.testAction?.codeCoverageTargets.count) == 2 + let buildableReference = xcscheme.testAction?.codeCoverageTargets.first + try expect(buildableReference?.blueprintName) == "ExternalTarget" + try expect(buildableReference?.referencedContainer) == "container:\(externalProject.string)" + } } } }