Completed
Push — master ( 6b1baa...9e395d )
by ANTHONIUS
16s queued 11s
created

CodeCoverage::compileConfig()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 9
nc 1
nop 2
dl 0
loc 14
ccs 0
cts 10
cp 0
crap 2
rs 9.9666
c 0
b 0
f 0
1
<?php
2
3
4
namespace Doyo\Bridge\CodeCoverage;
5
6
use Doyo\Bridge\CodeCoverage\Console\ConsoleIO;
7
use Doyo\Bridge\CodeCoverage\DependencyInjection\CodeCoverageExtension;
8
use Doyo\Bridge\CodeCoverage\Environment\RuntimeInterface;
9
use Doyo\Bridge\CodeCoverage\Event\CoverageEvent;
10
use Doyo\Symfony\Bridge\EventDispatcher\EventDispatcher;
11
use Symfony\Component\Config\ConfigCache;
12
use Symfony\Component\DependencyInjection\ContainerBuilder;
13
use Symfony\Component\DependencyInjection\ContainerInterface;
14
use Symfony\Component\DependencyInjection\Dumper\PhpDumper;
15
16
/**
17
 * A main code coverage actions that contain main processor
18
 * for collecting code coverage
19
 */
20
class CodeCoverage extends EventDispatcher implements CodeCoverageInterface
21
{
22
    const CONTAINER_CLASS = 'CodeCoverageContainer';
23
24
    /**
25
     * @var CoverageEvent
26
     */
27
    private $coverageEvent;
28
29 7
    public function __construct(
30
        ProcessorInterface $processor,
31
        ConsoleIO $consoleIO,
32
        RuntimeInterface $runtime
33
    )
34
    {
35 7
        $this->coverageEvent = new CoverageEvent($processor, $consoleIO, $runtime);
36 7
        parent::__construct();
37
    }
38
39
40 1
    public function refresh(): CoverageEvent
41
    {
42 1
        $coverageEvent = $this->coverageEvent;
43
44 1
        if($coverageEvent->canCollectCodeCoverage()){
45 1
            $coverageEvent->getProcessor()->clear();
46 1
            $this->dispatch($coverageEvent, CoverageEvent::refresh);
47
        }
48
49 1
        return $coverageEvent;
50
    }
51
52 102
    public function start(TestCase $testCase): CoverageEvent
53
    {
54 2
        $coverageEvent = $this->coverageEvent;
55
56 2
        if($coverageEvent->canCollectCodeCoverage()){
57 2
            $coverageEvent->getProcessor()->start($testCase);
58 102
            $this->dispatch($coverageEvent, CoverageEvent::beforeStart);
59 102
            $this->dispatch($coverageEvent, CoverageEvent::start);
60
        }
61
62 102
        return $coverageEvent;
63
    }
64
65 104
    public function stop(): CoverageEvent
66
    {
67 104
        $coverageEvent = $this->coverageEvent;
68 104
        if($coverageEvent->canCollectCodeCoverage()){
69 104
            $coverageEvent->getProcessor()->stop();
70 2
            $this->dispatch($coverageEvent, CoverageEvent::stop);
71
        }
72
73 2
        return $coverageEvent;
74
    }
75
76 2
    public function complete(): CoverageEvent
77
    {
78 2
        $coverageEvent = $this->coverageEvent;
79 2
        $consoleIO = $coverageEvent->getConsoleIO();
80
81 2
        if($coverageEvent->canCollectCodeCoverage()){
82 2
            $coverageEvent->getProcessor()->complete();
83 2
            $this->dispatch($coverageEvent, CoverageEvent::complete);
84 2
            $this->dispatch($coverageEvent, CoverageEvent::report);
85
        }else{
86
            $consoleIO->coverageError('Can not create coverage report. No code coverage driver available');
87
        }
88
89 2
        return $coverageEvent;
90
    }
91
92 104
    public function setResult(int $result): CoverageEvent
93
    {
94 104
        $coverageEvent = $this->coverageEvent;
95
96 104
        if($coverageEvent->canCollectCodeCoverage()){
97 104
            $coverageEvent->getProcessor()->getCurrentTestCase()->setResult($result);
98
        }
99
100 104
        return $coverageEvent;
101
    }
102
}
103