Test Failed
Push — feature/improve ( a24d4c...0de0a2 )
by Yo
02:22 queued 18s
created

LoggerSubExtension::load()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 48
Code Lines 28

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 36
CRAP Score 2

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 48
ccs 36
cts 36
cp 1
rs 9.125
cc 2
eloc 28
nc 2
nop 2
crap 2
1
<?php
2
namespace Yoanm\Behat3SymfonyExtension\ServiceContainer\SubExtension;
3
4
use Behat\Testwork\ServiceContainer\ExtensionManager;
5
use Monolog\Handler\StreamHandler;
6
use Monolog\Logger;
7
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
8
use Symfony\Component\DependencyInjection\ContainerBuilder;
9
use Symfony\Component\DependencyInjection\Reference;
10
use Yoanm\Behat3SymfonyExtension\Logger\SfKernelEventLogger;
11
use Yoanm\Behat3SymfonyExtension\ServiceContainer\AbstractExtension;
12
13
class LoggerSubExtension extends AbstractExtension
14
{
15
    /**
16
     * @inheritDoc
17
     */
18 2
    public function getConfigKey()
19
    {
20 2
        return 'logger';
21
    }
22
23
    // @codeCoverageIgnoreStart
24
    // Not possible to cover this because ExtensionManager is a final class
25
    /**
26
     * {@inheritdoc}
27
     */
28
    public function initialize(ExtensionManager $extensionManager)
29
    {
30
    }
31
    // @codeCoverageIgnoreEnd
32
33
    // @codeCoverageIgnoreStart
34
    // Will be covered by FT
35
    /**
36
     * @inheritDoc
37
     */
38
    public function configure(ArrayNodeDefinition $builder)
39
    {
40
        $builder
41
            ->addDefaultsIfNotSet()
42
            ->children()
43
                ->scalarNode('path')
44
                    ->defaultValue('var/log/behat.log')
45
                ->end()
46
                ->scalarNode('level')
47
                    ->beforeNormalization()
48
                    ->always()
49
                    ->then(function ($value) {
50
                        return Logger::toMonologLevel($value);
51
                    })
52
                    ->end()
53
                    ->defaultValue(Logger::DEBUG)
54
                ->end()
55
            ->end()
56
        ->end();
57
    }
58
    // @codeCoverageIgnoreEnd
59
60
    /**
61
     * {@inheritdoc}
62
     */
63 1
    public function load(ContainerBuilder $container, array $config)
64
    {
65 1
        $loggerConfig = $config[$this->getConfigKey()];
66 1
        $baseHandlerServiceId = 'logger.handler';
67
        // Handler
68 1
        $this->createService(
69 1
            $container,
70 1
            $baseHandlerServiceId,
71 1
            StreamHandler::class,
72
            [
73 1
                sprintf(
74 1
                    '%s/%s',
75 1
                    '%behat.paths.base%',
76 1
                    $loggerConfig['path']
77 1
                ),
78 1
                $loggerConfig['level'],
79
            ]
80 1
        );
81
        // Logger
82 1
        $this->createService(
83 1
            $container,
84 1
            'logger',
85 1
            Logger::class,
86
            [
87 1
                'behat3Symfony',
88 1
                $loggerConfig['level'],
89 1
            ],
90 1
            ['event_dispatcher.subscriber'],
91
            [
92
                [
93 1
                    'pushHandler',
94 1
                    [new Reference($this->buildContainerId($baseHandlerServiceId))]
95 1
                ]
96 1
            ]
97 1
        );
98
        // SfKernelEventLogger
99 1
        if (true === $config['kernel']['debug']) {
100 1
            $this->createService(
101 1
                $container,
102 1
                'logger.sf_kernel_logger',
103
                SfKernelEventLogger::class,
104 1
                [
105 1
                    new Reference($this->buildContainerId('kernel'))
106 1
                ],
107 1
                ['event_dispatcher.subscriber']
108 1
            );
109
        }
110
    }
111
112
    /**
113
     * {@inheritdoc}
114
     */
115
    public function process(ContainerBuilder $container)
116
    {
117
    }
118
}
119