diff --git a/src/Extension.php b/src/Extension.php index aa3a2f7..ea4a67a 100644 --- a/src/Extension.php +++ b/src/Extension.php @@ -82,7 +82,16 @@ public function load(ContainerBuilder $container, array $config) $container->setParameter('behat.code_coverage.config.delete', $config['delete']); $container->setParameter('behat.code_coverage.config.drivers', $config['drivers']); $container->setParameter('behat.code_coverage.config.filter', $config['filter']); - $container->setParameter('behat.code_coverage.config.report', $config['report']); + + if(isset($config['report'])) { + $container->setParameter('behat.code_coverage.config.report', $config['report']); + }elseif(isset($config['format']) && isset($config['output'])) { + $container->setParameter('behat.code_coverage.config.report', array( + 'format' => $config['format'], + 'output' => $config['output'] + )); + } + } /** @@ -188,6 +197,31 @@ public function configure(ArrayNodeDefinition $builder) ->end() ->end() ->end() + ->arrayNode('format') + ->prototype('scalar')->end() + ->end() + ->arrayNode('output') + ->children() + ->arrayNode('clover') + ->useAttributeAsKey('name') + ->prototype('scalar')->end() + ->end() + ->arrayNode('crap4j') + ->useAttributeAsKey('name') + ->prototype('scalar')->end() + ->end() + ->arrayNode('html') + ->useAttributeAsKey('name') + ->prototype('scalar')->end() + ->end() + ->scalarNode('php')->end() + ->arrayNode('text') + ->useAttributeAsKey('name') + ->prototype('scalar')->end() + ->end() + ->scalarNode('xml')->end() + ->end() + ->end() ->end() ->end(); } diff --git a/src/Service/ReportService.php b/src/Service/ReportService.php index e7142c6..8c5dd45 100644 --- a/src/Service/ReportService.php +++ b/src/Service/ReportService.php @@ -47,10 +47,37 @@ public function __construct(array $config, Factory $factory) */ public function generateReport(CodeCoverage $coverage) { - $format = $this->config['report']['format']; - $options = $this->config['report']['options']; + if(!empty($this->config['report']['format']) && !empty($this->config['report']['options'])){ + + $format = $this->config['report']['format']; + $options = $this->config['report']['options']; + + $report = $this->factory->create($format, $options); + $report->process($coverage); + + }elseif(!empty($this->config['report']['format']) && !empty($this->config['report']['output'])){ + + foreach($this->config['report']['format'] AS $format){ + + if(isset($this->config['report']['output'][$format])){ + + if(is_array($this->config['report']['output'][$format])) { + + $report = $this->factory->create($format, $this->config['report']['output'][$format]); + $report->process($coverage); + + }else{ + + $report = $this->factory->create($format, array('target' => $this->config['report']['output'][$format])); + $report->process($coverage); + + } + + } + + } + + } - $report = $this->factory->create($format, $options); - $report->process($coverage); } }