Skip to content

Commit 1037b47

Browse files
committed
Merge remote-tracking branch 'leanphp/develop'
2 parents f889176 + cc93fa6 commit 1037b47

File tree

7 files changed

+103
-480
lines changed

7 files changed

+103
-480
lines changed

src/Compiler/DriverPass.php

Lines changed: 0 additions & 45 deletions
This file was deleted.

src/Compiler/FactoryPass.php

Lines changed: 0 additions & 42 deletions
This file was deleted.

src/Compiler/FilterPass.php

Lines changed: 0 additions & 92 deletions
This file was deleted.

src/Extension.php

Lines changed: 103 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Component\Config\FileLocator;
1616
use Symfony\Component\DependencyInjection\ContainerBuilder;
1717
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
18+
use Symfony\Component\DependencyInjection\Reference;
1819
use LeanPHP\Behat\CodeCoverage\Compiler;
1920

2021
/**
@@ -211,24 +212,115 @@ public function process(ContainerBuilder $container)
211212
$container->getParameterBag()->set('behat.code_coverage.skip', true);
212213
}
213214

214-
$passes = $this->getCompilerPasses();
215+
$this->setupDriver($container);
216+
$this->setupFactory($container);
217+
$this->setupCodeCoverage($container);
218+
$this->setupCodeCoverageFilter($container);
215219

216-
foreach ($passes as $pass) {
217-
$pass->process($container);
220+
}
221+
222+
/**
223+
* @param ContainerBuilder $container
224+
*/
225+
private function setupDriver(ContainerBuilder $container)
226+
{
227+
if (! $container->hasDefinition('behat.code_coverage.driver.proxy')) {
228+
return;
229+
}
230+
231+
$proxy = $container->getDefinition('behat.code_coverage.driver.proxy');
232+
$enabled = $container->getParameter('behat.code_coverage.config.drivers');
233+
234+
foreach ($container->findTaggedServiceIds('behat.code_coverage.driver') as $id => $tagAttributes) {
235+
foreach ($tagAttributes as $attributes) {
236+
if (isset($attributes['alias'])
237+
&& in_array($attributes['alias'], $enabled)
238+
) {
239+
$proxy->addMethodCall('addDriver', array(new Reference($id)));
240+
}
241+
}
218242
}
219243
}
220244

221245
/**
222-
* return an array of compiler passes
223-
*
224-
* @return array
246+
* @param ContainerBuilder $container
247+
*/
248+
public function setupFactory(ContainerBuilder $container)
249+
{
250+
if (! $container->hasDefinition('vipsoft.code_coverage.driver.factory')) {
251+
return;
252+
}
253+
254+
$factory = $container->getDefinition('vipsoft.code_coverage.driver.factory');
255+
$drivers = array();
256+
$ids = $container->findTaggedServiceIds('vipsoft.code_coverage.driver');
257+
258+
foreach ($ids as $id => $attributes) {
259+
$drivers[] = $container->getDefinition($id)->getClass();
260+
}
261+
262+
$factory->setArguments(array($drivers));
263+
}
264+
265+
/**
266+
* @param ContainerBuilder $container
267+
*/
268+
private function setupCodeCoverage(ContainerBuilder $container)
269+
{
270+
if (! $container->hasDefinition('behat.code_coverage.php_code_coverage')) {
271+
return;
272+
}
273+
274+
$coverage = $container->getDefinition('behat.code_coverage.php_code_coverage');
275+
$config = $container->getParameter('behat.code_coverage.config.filter');
276+
277+
$coverage->addMethodCall(
278+
'setAddUncoveredFilesFromWhitelist',
279+
array($config['whitelist']['addUncoveredFilesFromWhitelist'])
280+
);
281+
$coverage->addMethodCall(
282+
'setProcessUncoveredFilesFromWhiteList',
283+
array($config['whitelist']['processUncoveredFilesFromWhitelist'])
284+
);
285+
$coverage->addMethodCall(
286+
'setForceCoversAnnotation',
287+
array($config['forceCoversAnnotation'])
288+
);
289+
}
290+
291+
/**
292+
* @param ContainerBuilder $container
225293
*/
226-
private function getCompilerPasses()
294+
private function setupCodeCoverageFilter(ContainerBuilder $container)
227295
{
228-
return array(
229-
new Compiler\DriverPass(),
230-
new Compiler\FactoryPass(),
231-
new Compiler\FilterPass(),
296+
if (! $container->hasDefinition('behat.code_coverage.php_code_coverage_filter')) {
297+
return;
298+
}
299+
300+
$filter = $container->getDefinition('behat.code_coverage.php_code_coverage_filter');
301+
$config = $container->getParameter('behat.code_coverage.config.filter');
302+
303+
$dirs = array(
304+
'addDirectoryToWhiteList' => array('whitelist', 'include', 'directories'),
305+
'removeDirectoryFromWhiteList' => array('whitelist', 'exclude', 'directories'),
306+
);
307+
308+
foreach ($dirs as $method => $hiera) {
309+
foreach ($config[$hiera[0]][$hiera[1]][$hiera[2]] as $path => $dir) {
310+
$filter->addMethodCall($method, array($path, $dir['suffix'], $dir['prefix']));
311+
}
312+
}
313+
314+
$files = array(
315+
'addFileToWhiteList' => array('whitelist', 'include', 'files'),
316+
'removeFileFromWhiteList' => array('whitelist', 'exclude', 'files'),
232317
);
318+
319+
foreach ($files as $method => $hiera) {
320+
foreach ($config[$hiera[0]][$hiera[1]][$hiera[2]] as $file) {
321+
$filter->addMethodCall($method, array($file));
322+
}
323+
}
233324
}
325+
234326
}

tests/Compiler/DriverPassTest.php

Lines changed: 0 additions & 69 deletions
This file was deleted.

0 commit comments

Comments
 (0)