Completed
Push — develop ( c86111...2faf16 )
by ANTHONIUS
21s
created

Extension   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 22
dl 0
loc 51
ccs 25
cts 25
cp 1
rs 10
c 0
b 0
f 0
wmc 7

6 Methods

Rating   Name   Duplication   Size   Complexity  
A process() 0 2 1
A initialize() 0 2 1
A getConfigKey() 0 3 1
A configure() 0 6 1
A load() 0 12 2
A loadServices() 0 13 1
1
<?php
2
3
/*
4
 * This file is part of the doyo/behat-coverage-extension project.
5
 *
6
 * (c) Anthonius Munthi <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace Doyo\Behat\Coverage;
15
16
use Behat\Testwork\ServiceContainer\Extension as ExtensionInterface;
17
use Behat\Testwork\ServiceContainer\ExtensionManager;
18
use Doyo\Behat\Coverage\Compiler\CoveragePass;
19
use Doyo\Behat\Coverage\Compiler\DriverPass;
20
use Doyo\Behat\Coverage\Compiler\ReportPass;
21
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
22
use Symfony\Component\Config\FileLocator;
23
use Symfony\Component\DependencyInjection\ContainerBuilder;
24
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
25
26
class Extension implements ExtensionInterface
27
{
28
    public function process(ContainerBuilder $container)
29
    {
30
    }
31
32 1
    public function getConfigKey()
33
    {
34 1
        return 'doyo';
35
    }
36
37
    public function initialize(ExtensionManager $extensionManager)
38
    {
39
    }
40
41 1
    public function configure(ArrayNodeDefinition $builder)
42
    {
43 1
        $config = new Configuration();
44 1
        $config->configure($builder);
45
46 1
        return $builder;
47
    }
48
49 1
    public function load(ContainerBuilder $container, array $config)
50
    {
51 1
        $this->loadServices($container);
52
53 1
        $container->setParameter('doyo.coverage.options', $config['coverage']);
54 1
        $container->setParameter('doyo.coverage.config', $config);
55 1
        $container->setParameter('doyo.coverage.sessions', $config['sessions']);
56
57 1
        $reportFormats = ['clover', 'crap4j', 'html', 'php', 'text', 'xml'];
58 1
        foreach ($reportFormats as $format) {
59 1
            $name = 'doyo.coverage.report.'.$format;
60 1
            $container->setParameter($name, $config['report'][$format]);
61
        }
62
    }
63
64 1
    private function loadServices(ContainerBuilder $container)
65
    {
66 1
        $locator = new FileLocator(__DIR__.'/Resources/config');
67 1
        $loader  = new XmlFileLoader($container, $locator);
68
69 1
        $loader->load('core.xml');
70 1
        $loader->load('drivers.xml');
71 1
        $loader->load('coverage.xml');
72 1
        $loader->load('report.xml');
73
74 1
        $container->addCompilerPass(new DriverPass());
75 1
        $container->addCompilerPass(new ReportPass());
76 1
        $container->addCompilerPass(new CoveragePass());
77
    }
78
}
79