Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php declare(strict_types=1);
2
/*
3
 * This file is part of phpunit/php-code-coverage.
4
 *
5
 * (c) Sebastian Bergmann <sebastian@phpunit.de>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
namespace SebastianBergmann\CodeCoverage\Driver;
11
 
12
use const pcov\inclusive;
13
use function array_intersect;
14
use function extension_loaded;
15
use function pcov\clear;
16
use function pcov\collect;
17
use function pcov\start;
18
use function pcov\stop;
19
use function pcov\waiting;
20
use function phpversion;
21
use SebastianBergmann\CodeCoverage\Filter;
22
use SebastianBergmann\CodeCoverage\RawCodeCoverageData;
23
 
24
/**
25
 * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
26
 */
27
final class PcovDriver extends Driver
28
{
29
    /**
30
     * @var Filter
31
     */
32
    private $filter;
33
 
34
    /**
35
     * @throws PcovNotAvailableException
36
     */
37
    public function __construct(Filter $filter)
38
    {
39
        if (!extension_loaded('pcov')) {
40
            throw new PcovNotAvailableException;
41
        }
42
 
43
        $this->filter = $filter;
44
    }
45
 
46
    public function start(): void
47
    {
48
        start();
49
    }
50
 
51
    public function stop(): RawCodeCoverageData
52
    {
53
        stop();
54
 
55
        $filesToCollectCoverageFor = waiting();
56
        $collected                 = [];
57
 
58
        if ($filesToCollectCoverageFor) {
59
            if (!$this->filter->isEmpty()) {
60
                $filesToCollectCoverageFor = array_intersect($filesToCollectCoverageFor, $this->filter->files());
61
            }
62
 
63
            $collected = collect(inclusive, $filesToCollectCoverageFor);
64
 
65
            clear();
66
        }
67
 
68
        return RawCodeCoverageData::fromXdebugWithoutPathCoverage($collected);
69
    }
70
 
71
    public function nameAndVersion(): string
72
    {
73
        return 'PCOV ' . phpversion('pcov');
74
    }
75
}