Skip to content

Commit 587e157

Browse files
committed
Fix leanphp/behat-code-coverage#3 and explicitly add the available options to the configuration schema
1 parent 33ae478 commit 587e157

File tree

5 files changed

+99
-16
lines changed

5 files changed

+99
-16
lines changed

README.md

+23-8
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ with compatible version numbers for stable releases.
1919

2020
- PHP 7.1+
2121
- [Behat v3][3]
22-
- [Xdebug][5] or [phpdbg][6] extension enabled
22+
- [Xdebug][5] or phpdbg extension enabled
2323

2424
## Change Log
2525

@@ -110,13 +110,28 @@ default:
110110
# 'prefix': 'Test'
111111
# files:
112112
# - tests/bootstrap.php
113-
# report configuration
114-
report:
115-
# report format (html, clover, php, text)
116-
format: html
117-
# report options
118-
options:
119-
target: build/behat-coverage/html
113+
# report configuration. For a report to be generated, include at least 1 configuration option under the relevant key
114+
reports:
115+
clover:
116+
name: 'Project name'
117+
target: build/coverage-behat/clover.xml
118+
crap4j:
119+
name: 'Project name'
120+
target: build/coverage-behat/crap4j.xml
121+
html:
122+
target: build/coverage-behat
123+
lowUpperBound: 50
124+
highLowerBound: 90
125+
php:
126+
target: build/coverage-behat/coverage.php
127+
text:
128+
showColors: true
129+
showUncoveredFiles: true
130+
showOnlySummary: false
131+
lowUpperBound: 50
132+
highLowerBound: 90
133+
xml:
134+
target: build/coverage-behat
120135
```
121136

122137
### Configuration Options

behat.yml.dist

+14
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,18 @@ default:
1515
report:
1616
format: html
1717
options:
18+
target: build/coverage-behat-deprecated-report-config
19+
reports:
20+
clover:
21+
target: build/coverage-behat/clover.xml
22+
crap4j:
23+
target: build/coverage-behat/crap4j.xml
24+
html:
25+
target: build/coverage-behat
26+
php:
27+
target: build/coverage-behat/coverage.php
28+
text:
29+
showColors: true
30+
showUncoveredFiles: true
31+
xml:
1832
target: build/coverage-behat

src/Extension.php

+45-2
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ public function load(ContainerBuilder $container, array $config): void
8282
$container->setParameter('behat.code_coverage.config.delete', $config['delete']);
8383
$container->setParameter('behat.code_coverage.config.drivers', $config['drivers']);
8484
$container->setParameter('behat.code_coverage.config.filter', $config['filter']);
85-
$container->setParameter('behat.code_coverage.config.report', $config['report']);
85+
$container->setParameter('behat.code_coverage.config.report', $config['report'] ?? []);
86+
$container->setParameter('behat.code_coverage.config.reports', $config['reports'] ?? []);
8687
}
8788

8889
/**
@@ -91,7 +92,6 @@ public function load(ContainerBuilder $container, array $config): void
9192
public function configure(ArrayNodeDefinition $builder): void
9293
{
9394
$builder
94-
->addDefaultsIfNotSet()
9595
->children()
9696
->arrayNode('auth')
9797
->children()
@@ -182,6 +182,7 @@ public function configure(ArrayNodeDefinition $builder): void
182182
->end()
183183
->end()
184184
->arrayNode('report')
185+
->setDeprecated('The "report" option is deprecated. Use "reports" instead.')
185186
->children()
186187
->scalarNode('format')->defaultValue('html')->end()
187188
->arrayNode('options')
@@ -190,6 +191,48 @@ public function configure(ArrayNodeDefinition $builder): void
190191
->end()
191192
->end()
192193
->end()
194+
->arrayNode('reports')
195+
->children()
196+
->arrayNode('clover')
197+
->children()
198+
->scalarNode('name')->end()
199+
->scalarNode('target')->end()
200+
->end()
201+
->end()
202+
->arrayNode('crap4j')
203+
->children()
204+
->scalarNode('name')->end()
205+
->scalarNode('target')->end()
206+
->end()
207+
->end()
208+
->arrayNode('html')
209+
->children()
210+
->scalarNode('target')->end()
211+
->scalarNode('lowUpperBound')->end()
212+
->scalarNode('highLowerBound')->end()
213+
->end()
214+
->end()
215+
->arrayNode('php')
216+
->children()
217+
->scalarNode('target')->end()
218+
->end()
219+
->end()
220+
->arrayNode('text')
221+
->children()
222+
->booleanNode('showColors')->end()
223+
->scalarNode('lowUpperBound')->end()
224+
->scalarNode('highLowerBound')->end()
225+
->booleanNode('showOnlySummary')->end()
226+
->booleanNode('showUncoveredFiles')->end()
227+
->end()
228+
->end()
229+
->arrayNode('xml')
230+
->children()
231+
->scalarNode('target')->end()
232+
->end()
233+
->end()
234+
->end()
235+
->end()
193236
->end()
194237
->end();
195238
}

src/Resources/config/services.xml

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<parameter key="drivers">%behat.code_coverage.config.drivers%</parameter>
2222
<parameter key="filter">%behat.code_coverage.config.filter%</parameter>
2323
<parameter key="report">%behat.code_coverage.config.report%</parameter>
24+
<parameter key="reports">%behat.code_coverage.config.reports%</parameter>
2425
</parameter>
2526

2627
<parameter key="dvdoug.code_coverage.driver.phpdbg.class">SebastianBergmann\CodeCoverage\Driver\PHPDBG</parameter>

src/Service/ReportService.php

+16-6
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,24 @@ public function __construct(array $config, Factory $factory)
4545
*/
4646
public function generateReport(CodeCoverage $coverage): void
4747
{
48-
$format = $this->config['report']['format'];
49-
$options = $this->config['report']['options'];
48+
if (!empty($this->config['report']['format'])) {
49+
$format = $this->config['report']['format'];
50+
$options = $this->config['report']['options'] ?? [];
51+
$report = $this->factory->create($format, $options);
52+
$report->process($coverage);
53+
}
5054

51-
$report = $this->factory->create($format, $options);
52-
$output = $report->process($coverage);
55+
if (!empty($this->config['reports'])) {
56+
foreach ($this->config['reports'] as $format => $config) {
57+
if ($config) {
58+
$report = $this->factory->create($format, $config);
59+
$reportContent = $report->process($coverage);
5360

54-
if ('text' === $format) {
55-
print_r($output);
61+
if ('text' === $format) {
62+
echo $reportContent;
63+
}
64+
}
65+
}
5666
}
5767
}
5868
}

0 commit comments

Comments
 (0)