CasperSecurity

Current Path : /var/www/orientalss.com/vendor/brianium/paratest/src/Coverage/
Upload File :
Current File : /var/www/orientalss.com/vendor/brianium/paratest/src/Coverage/CoverageMerger.php

<?php

declare(strict_types=1);

namespace ParaTest\Coverage;

use SebastianBergmann\CodeCoverage\CodeCoverage;
use SebastianBergmann\CodeCoverage\ProcessedCodeCoverageData;
use SebastianBergmann\Environment\Runtime;

use function array_map;
use function array_slice;
use function assert;
use function filesize;
use function is_file;
use function unlink;

/** @internal */
final class CoverageMerger
{
    /** @var CodeCoverage|null */
    private $coverage;
    /** @var int */
    private $testLimit;

    public function __construct(int $testLimit)
    {
        $this->testLimit = $testLimit;
    }

    private function addCoverage(CodeCoverage $coverage): void
    {
        if ($this->coverage === null) {
            $this->coverage = $coverage;
        } else {
            $this->coverage->merge($coverage);
        }

        $this->limitCoverageTests($this->coverage);
    }

    /**
     * Adds the coverage contained in $coverageFile and deletes the file afterwards.
     *
     * @param string $coverageFile Code coverage file
     */
    public function addCoverageFromFile(string $coverageFile): void
    {
        if (! is_file($coverageFile) || filesize($coverageFile) === 0) {
            $extra = 'This means a PHPUnit process has crashed.';
            if (! (new Runtime())->canCollectCodeCoverage()) {
                // @codeCoverageIgnoreStart
                $extra = 'No coverage driver found! Enable one of Xdebug, PHPDBG or PCOV for coverage.';
                // @codeCoverageIgnoreEnd
            }

            throw new EmptyCoverageFileException("Coverage file {$coverageFile} is empty. " . $extra);
        }

        /** @psalm-suppress UnresolvableInclude **/
        $coverage = include $coverageFile;
        assert($coverage instanceof CodeCoverage);
        $this->addCoverage($coverage);

        unlink($coverageFile);
    }

    public function getCodeCoverageObject(): ?CodeCoverage
    {
        return $this->coverage;
    }

    private function limitCoverageTests(CodeCoverage $coverage): void
    {
        if ($this->testLimit === 0) {
            return;
        }

        $testLimit     = $this->testLimit;
        $data          = $coverage->getData(true);
        $newData       = array_map(
            static function (array $lines) use ($testLimit): array {
                return array_map(static function (array $value) use ($testLimit): array {
                    return array_slice($value, 0, $testLimit);
                }, $lines);
            },
            $data->lineCoverage(),
        );
        $processedData = new ProcessedCodeCoverageData();
        $processedData->setLineCoverage($newData);

        $coverage->setData($processedData);
    }
}
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY