Failed Conditions
Push — feature/extension ( 6c86ef...6608eb )
by Yo
03:49
created

LoggerSubExtension::configure()   B

Complexity

Conditions 2
Paths 1

Size

Total Lines 34
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 34
ccs 0
cts 18
cp 0
rs 8.8571
c 0
b 0
f 0
cc 2
eloc 23
nc 1
nop 1
crap 6
1
<?php
2
namespace Yoanm\Behat3SymfonyExtension\ServiceContainer\SubExtension;
3
4
use Monolog\Handler\StreamHandler;
5
use Monolog\Logger;
6
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
7
use Symfony\Component\DependencyInjection\ContainerBuilder;
8
use Symfony\Component\DependencyInjection\Reference;
9
use Yoanm\Behat3SymfonyExtension\Logger\SfKernelEventLogger;
10
11
class LoggerSubExtension extends AbstractSubExtension
12
{
13
    /**
14
     * @inheritDoc
15
     */
16 2
    public function getConfigKey()
17
    {
18 2
        return 'logger';
19
    }
20
21
    /**
22
     * @inheritDoc
23
     */
24
    public function configure(ArrayNodeDefinition $builder)
25
    {
26
        /**
27
         * @codeCoverageIgnoreStart
28
         * Will be a pain to cover this manually
29
         */
30
        $castToBool = function ($value) {
0 ignored issues
show
Unused Code introduced by
$castToBool is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
31
            $filtered = filter_var(
32
                $value,
33
                FILTER_VALIDATE_BOOLEAN,
34
                FILTER_NULL_ON_FAILURE
35
            );
36
37
            return (null === $filtered) ? (bool) $value : $filtered;
38
        };
39
        $builder
40
            ->addDefaultsIfNotSet()
41
            ->children()
42
                ->scalarNode('path')
43
                    ->defaultValue('var/log/behat.log')
44
                ->end()
45
                ->scalarNode('level')
46
                    ->beforeNormalization()
47
                    ->always()
48
                    ->then(function ($value) {
49
                        return Logger::toMonologLevel($value);
50
                    })
51
                    ->end()
52
                    ->defaultValue(Logger::DEBUG)
53
                ->end()
54
            ->end()
55
        ->end();
56
        // @codeCoverageIgnoreEnd
57
    }
58
59
    /**
60
     * {@inheritdoc}
61
     */
62 1
    public function load(ContainerBuilder $container, array $config)
63
    {
64 1
        $loggerConfig = $config[$this->getConfigKey()];
65 1
        $baseHandlerServiceId = 'logger.handler';
66
        // Handler
67 1
        $this->createService(
68 1
            $container,
69 1
            $baseHandlerServiceId,
70 1
            StreamHandler::class,
71
            array(
72 1
                sprintf(
73 1
                    '%s/%s',
74 1
                    '%behat.paths.base%',
75 1
                    $loggerConfig['path']
76 1
                ),
77 1
                $loggerConfig['level'],
78
            )
79 1
        );
80
        // Logger
81 1
        $this->createService(
82 1
            $container,
83 1
            'logger',
84 1
            Logger::class,
85
            array(
86 1
                'behat3Symfony',
87 1
                $loggerConfig['level'],
88 1
            ),
89 1
            array('event_dispatcher.subscriber'),
90
            array(
91
                array(
92 1
                    'pushHandler',
93 1
                    array(new Reference($this->getContainerParamOrServiceId($baseHandlerServiceId)))
94 1
                )
95 1
            )
96 1
        );
97
        // SfKernelEventLogger
98 1
        $this->createService(
99 1
            $container,
100 1
            'logger.sf_kernel_logger',
101 1
            SfKernelEventLogger::class,
102
            array(
103 1
                new Reference($this->getContainerParamOrServiceId('kernel'))
104 1
            ),
105 1
            array('event_dispatcher.subscriber')
106 1
        );
107 1
    }
108
}
109