CodeCoverageReporters::__construct()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.6666
c 0
b 0
f 0
cc 2
eloc 5
nc 2
nop 2
1
<?php
2
3
namespace Peridot\Reporter;
4
5
use Evenement\EventEmitterInterface;
6
use Peridot\Console\Environment;
7
use Symfony\Component\Console\Input\InputInterface;
8
use Symfony\Component\Console\Input\InputOption;
9
use Symfony\Component\Console\Output\OutputInterface;
10
11
/**
12
 * Class CodeCoverageReporters
13
 * @package Peridot\Reporter
14
 */
15
class CodeCoverageReporters
16
{
17
    /**
18
     * @var \Peridot\Reporter\CodeCoverageConfiguration
19
     */
20
    protected $configuration;
21
22
    /**
23
     * @var EventEmitterInterface
24
     */
25
    protected $eventEmitter;
26
27
    /**
28
     * Constructor.
29
     *
30
     * @param EventEmitterInterface $eventEmitter
31
     * @param CodeCoverageConfiguration|null $configuration
32
     */
33
    public function __construct(EventEmitterInterface $eventEmitter, CodeCoverageConfiguration $configuration = null)
34
    {
35
        if (!$configuration) {
36
            $configuration = new CodeCoverageConfiguration($eventEmitter);
37
        }
38
39
        $this->configuration = $configuration;
40
        $this->eventEmitter = $eventEmitter;
41
    }
42
43
    /**
44
     * Handle the peridot.execute event.
45
     *
46
     * @param InputInterface $input
47
     * @param OutputInterface $output
48
     */
49
    public function onPeridotExecute(InputInterface $input, OutputInterface $output)
0 ignored issues
show
Unused Code introduced by
The parameter $output is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
50
    {
51
        if ($input->hasOption('code-coverage-path')) {
52
            $this->configuration->setReportPath($input->getOption('code-coverage-path'));
53
        }
54
    }
55
56
    /**
57
     * Handle the peridot.reporters event.
58
     *
59
     * @param InputInterface $input
60
     * @param ReporterFactory $reporterFactory
61
     */
62
    public function onPeridotReporters(InputInterface $input, ReporterFactory $reporterFactory)
63
    {
64
        $reporterFactory->register(
65
            'clover-code-coverage',
66
            'Code coverage with a PHP_CodeCoverage style Clover report',
67
            'Peridot\Reporter\CodeCoverage\CloverCodeCoverageReporter'
68
        );
69
70
        $reporterFactory->register(
71
            'crap4j-code-coverage',
72
            'Code coverage with a PHP_CodeCoverage style Crap4J report',
73
            'Peridot\Reporter\CodeCoverage\Crap4JCodeCoverageReporter'
74
        );
75
76
        $reporterFactory->register(
77
            'html-code-coverage',
78
            'Code coverage with a PHP_CodeCoverage style HTML report',
79
            'Peridot\Reporter\CodeCoverage\HTMLCodeCoverageReporter'
80
        );
81
82
        $reporterFactory->register(
83
            'php-code-coverage',
84
            'Code coverage with a PHP_CodeCoverage style PHP report',
85
            'Peridot\Reporter\CodeCoverage\PHPCodeCoverageReporter'
86
        );
87
88
        $reporterFactory->register(
89
            'text-code-coverage',
90
            'Code coverage with a PHP_CodeCoverage style Text report',
91
            'Peridot\Reporter\CodeCoverage\TextCodeCoverageReporter'
92
        );
93
94
        $reporterFactory->register(
95
            'xml-code-coverage',
96
            'Code coverage with a PHP_CodeCoverage style XML report',
97
            'Peridot\Reporter\CodeCoverage\XMLCodeCoverageReporter'
98
        );
99
    }
100
101
    public function onPeridotStart(Environment $environment)
102
    {
103
        $environment->getDefinition()->option(
104
            'code-coverage-path',
105
            'coverage',
106
            InputOption::VALUE_REQUIRED,
107
            'Set the output directory for code coverage reporter'
108
        );
109
    }
110
111
    /**
112
     * Register the reporters.
113
     *
114
     * @return $this
115
     */
116
    public function register()
117
    {
118
        $this->eventEmitter->on('peridot.start', [$this, 'onPeridotStart']);
119
        $this->eventEmitter->on('peridot.execute', [$this, 'onPeridotExecute']);
120
        $this->eventEmitter->on('peridot.reporters', [$this, 'onPeridotReporters']);
121
        return $this;
122
    }
123
}
124