Skip to content

Commit b4a7396

Browse files
authored
Merge pull request #33 from leanphp/no-coverage-flag
`--no-coverage` flag
2 parents 5286b90 + 7c1da09 commit b4a7396

File tree

7 files changed

+102
-1
lines changed

7 files changed

+102
-1
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ documented in this file.
66
The format is based on [Keep a Changelog](http://keepachangelog.com/)
77
and this project adheres to [Semantic Versioning](http://semver.org/).
88

9+
## 3.x-dev
10+
11+
- Add `--no-coverage` parameter option to skip code coverage generation.
912

1013
## [3.2.1] - 2018-03-21
1114

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
/**
3+
* This file is part of the leanphp/behat-code-coverage package
4+
*
5+
* @author ek9 <dev@ek9.co>
6+
*
7+
* @license BSD-2-Clause
8+
*
9+
* For the full copyright and license information, please see the LICENSE file
10+
* that was distributed with this source code.
11+
*/
12+
13+
namespace LeanPHP\Behat\CodeCoverage\Controller\Cli;
14+
15+
use Behat\Testwork\Cli\Controller;
16+
use Symfony\Component\Console\Command\Command;
17+
use Symfony\Component\Console\Input\InputInterface;
18+
use Symfony\Component\Console\Input\InputOption;
19+
use Symfony\Component\Console\Output\OutputInterface;
20+
use Symfony\Component\DependencyInjection\ContainerBuilder;
21+
22+
/**
23+
* Code Coverage Cli Controller
24+
*
25+
* @author Danny Lewis
26+
*/
27+
class CodeCoverageController implements Controller
28+
{
29+
/**
30+
* {@inheritdoc}
31+
*/
32+
public function configure(Command $command)
33+
{
34+
$command->addOption('no-coverage', null, InputOption::VALUE_NONE, 'Skip Code Coverage generation');
35+
}
36+
37+
/**
38+
* {@inheritdoc}
39+
*/
40+
public function execute(InputInterface $input, OutputInterface $output)
41+
{
42+
}
43+
}

src/Extension.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,11 @@ public function getConfigKey()
206206
*/
207207
public function process(ContainerBuilder $container)
208208
{
209+
$input = $container->get('cli.input');
210+
if ($input->hasParameterOption('--no-coverage')) {
211+
$container->getParameterBag()->set('behat.code_coverage.skip', true);
212+
}
213+
209214
$passes = $this->getCompilerPasses();
210215

211216
foreach ($passes as $pass) {

src/Listener/EventListener.php

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,23 @@ class EventListener implements EventSubscriberInterface
3434
*/
3535
private $reportService;
3636

37+
/**
38+
* @var bool
39+
*/
40+
private $skipCoverage;
41+
3742
/**
3843
* Constructor
3944
*
4045
* @param CodeCoverage $coverage
4146
* @param \LeanPHP\Behat\CodeCoverage\Service\ReportService $reportService
47+
* @param boolean $skipCoverage
4248
*/
43-
public function __construct(CodeCoverage $coverage, ReportService $reportService)
49+
public function __construct(CodeCoverage $coverage, ReportService $reportService, $skipCoverage = false)
4450
{
4551
$this->coverage = $coverage;
4652
$this->reportService = $reportService;
53+
$this->skipCoverage = $skipCoverage;
4754
}
4855

4956
/**
@@ -68,6 +75,10 @@ public static function getSubscribedEvents()
6875
*/
6976
public function beforeExercise(ExerciseCompleted $event)
7077
{
78+
if ($this->skipCoverage) {
79+
return;
80+
}
81+
7182
$this->coverage->clear();
7283
}
7384

@@ -78,6 +89,10 @@ public function beforeExercise(ExerciseCompleted $event)
7889
*/
7990
public function beforeScenario(ScenarioTested $event)
8091
{
92+
if ($this->skipCoverage) {
93+
return;
94+
}
95+
8196
$node = $event->getScenario();
8297
$id = $event->getFeature()->getFile().':'.$node->getLine();
8398

@@ -91,6 +106,10 @@ public function beforeScenario(ScenarioTested $event)
91106
*/
92107
public function afterScenario(ScenarioTested $event)
93108
{
109+
if ($this->skipCoverage) {
110+
return;
111+
}
112+
94113
$this->coverage->stop();
95114
}
96115

@@ -101,6 +120,10 @@ public function afterScenario(ScenarioTested $event)
101120
*/
102121
public function afterExercise(ExerciseCompleted $event)
103122
{
123+
if ($this->skipCoverage) {
124+
return;
125+
}
126+
104127
$this->reportService->generateReport($this->coverage);
105128
}
106129
}

src/Resources/config/services-2.3.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
55

66
<parameters>
7+
<parameter key="behat.code_coverage.controller.cli.class">LeanPHP\Behat\CodeCoverage\Controller\Cli\CodeCoverageController</parameter>
78
<parameter key="behat.code_coverage.driver.proxy.class">LeanPHP\Behat\CodeCoverage\Driver\Proxy</parameter>
89
<parameter key="behat.code_coverage.driver.remote.class">LeanPHP\Behat\CodeCoverage\Driver\RemoteXdebug</parameter>
910
<parameter key="behat.code_coverage.listener.event.class">LeanPHP\Behat\CodeCoverage\Listener\EventListener</parameter>
1011
<parameter key="behat.code_coverage.service.report.class">LeanPHP\Behat\CodeCoverage\Service\ReportService</parameter>
1112
<parameter key="behat.code_coverage.service.report_factory.class">LeanPHP\Behat\CodeCoverage\Common\Report\Factory</parameter>
13+
<parameter key="behat.code_coverage.skip">false</parameter>
1214

1315
<parameter key="behat.code_coverage.config" type="collection">
1416
<parameter key="base_url">%mink.base_url%</parameter>
@@ -28,6 +30,13 @@
2830
</parameters>
2931

3032
<services>
33+
<!-- Code Coverage Cli Controller -->
34+
<service id="behat.code_coverage.controller.cli"
35+
class="%behat.code_coverage.controller.cli.class%">
36+
<argument type="service" id="service_container" />
37+
<tag name="cli.controller" priority="80000" />
38+
</service>
39+
3140
<service id="vipsoft.code_coverage.driver.hhmv"
3241
class="%vipsoft.code_coverage.driver.hhmv.class%"
3342
synthetic="true">
@@ -76,6 +85,7 @@
7685
<service id="behat.code_coverage.listener.event" class="%behat.code_coverage.listener.event.class%">
7786
<argument type="service" id="behat.code_coverage.php_code_coverage" />
7887
<argument type="service" id="behat.code_coverage.service.report" />
88+
<argument>%behat.code_coverage.skip%</argument>
7989
<tag name="event_dispatcher.subscriber" />
8090
</service>
8191

src/Resources/config/services.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
55

66
<parameters>
7+
<parameter key="behat.code_coverage.controller.cli.class">LeanPHP\Behat\CodeCoverage\Controller\Cli\CodeCoverageController</parameter>
78
<parameter key="behat.code_coverage.driver.proxy.class">LeanPHP\Behat\CodeCoverage\Driver\Proxy</parameter>
89
<parameter key="behat.code_coverage.driver.remote.class">LeanPHP\Behat\CodeCoverage\Driver\RemoteXdebug</parameter>
910
<parameter key="behat.code_coverage.listener.event.class">LeanPHP\Behat\CodeCoverage\Listener\EventListener</parameter>
1011
<parameter key="behat.code_coverage.service.report.class">LeanPHP\Behat\CodeCoverage\Service\ReportService</parameter>
1112
<parameter key="behat.code_coverage.service.report_factory.class">LeanPHP\Behat\CodeCoverage\Common\Report\Factory</parameter>
13+
<parameter key="behat.code_coverage.skip">false</parameter>
1214

1315
<parameter key="behat.code_coverage.config" type="collection">
1416
<parameter key="base_url">%mink.base_url%</parameter>
@@ -28,6 +30,13 @@
2830
</parameters>
2931

3032
<services>
33+
<!-- Code Coverage Cli Controller -->
34+
<service id="behat.code_coverage.controller.cli"
35+
class="%behat.code_coverage.controller.cli.class%">
36+
<argument type="service" id="service_container" />
37+
<tag name="cli.controller" priority="80000" />
38+
</service>
39+
3140
<service id="vipsoft.code_coverage.driver.hhmv"
3241
class="%vipsoft.code_coverage.driver.hhmv.class%"
3342
synthetic="true">
@@ -76,6 +85,7 @@
7685
<service id="behat.code_coverage.listener.event" class="%behat.code_coverage.listener.event.class%">
7786
<argument type="service" id="behat.code_coverage.php_code_coverage" />
7887
<argument type="service" id="behat.code_coverage.service.report" />
88+
<argument>%behat.code_coverage.skip%</argument>
7989
<tag name="event_dispatcher.subscriber" />
8090
</service>
8191

tests/ExtensionTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,8 +371,15 @@ public function testConfigure()
371371
public function testProcess()
372372
{
373373
$container = $this->createMock('Symfony\Component\DependencyInjection\ContainerBuilder');
374+
$input = $this->createMock('Symfony\Component\Console\Input\ArgvInput');
375+
376+
$input->expects($this->exactly(1))
377+
->method('hasParameterOption');
378+
374379
$container->expects($this->exactly(4))
375380
->method('hasDefinition');
381+
$container->expects($this->exactly(1))
382+
->method('get')->willReturn($input);
376383

377384
$extension = new Extension();
378385

0 commit comments

Comments
 (0)