Вход Регистрация
Файл: vendor/nunomaduro/collision/src/Adapters/Phpunit/TestResult.php
Строк: 142
<?php

declare(strict_types=1);

namespace 
NunoMaduroCollisionAdaptersPhpunit;

use 
NunoMaduroCollisionContractsAdaptersPhpunitHasPrintableTestCaseName;
use 
PHPUnitFrameworkTestCase;
use 
Throwable;

/**
 * @internal
 */
final class TestResult
{
    public const 
FAIL 'failed';

    public const 
SKIPPED 'skipped';

    public const 
INCOMPLETE 'incomplete';

    public const 
RISKY 'risky';

    public const 
WARN 'warnings';

    public const 
RUNS 'pending';

    public const 
PASS 'passed';

    
/**
     * @readonly
     *
     * @var string
     */
    
public $testCaseName;

    
/**
     * @readonly
     *
     * @var string
     */
    
public $description;

    
/**
     * @readonly
     *
     * @var string
     */
    
public $type;

    
/**
     * @readonly
     *
     * @var string
     */
    
public $icon;

    
/**
     * @readonly
     *
     * @var string
     */
    
public $color;

    
/**
     * @readonly
     *
     * @var Throwable|null
     */
    
public $throwable;

    
/**
     * @readonly
     *
     * @var string
     */
    
public $warning '';

    
/**
     * Test constructor.
     */
    
private function __construct(string $testCaseNamestring $descriptionstring $typestring $iconstring $colorThrowable $throwable null)
    {
        
$this->testCaseName $testCaseName;
        
$this->description $description;
        
$this->type $type;
        
$this->icon $icon;
        
$this->color $color;
        
$this->throwable $throwable;

        
$asWarning $this->type === TestResult::WARN
             
|| $this->type === TestResult::RISKY
             
|| $this->type === TestResult::SKIPPED
             
|| $this->type === TestResult::INCOMPLETE;

        if (
$throwable instanceof Throwable && $asWarning) {
            
$this->warning trim((string) preg_replace("/r|n/"' '$throwable->getMessage()));
        }
    }

    
/**
     * Creates a new test from the given test case.
     */
    
public static function fromTestCase(TestCase $testCasestring $typeThrowable $throwable null): self
    
{
        
$testCaseName State::getPrintableTestCaseName($testCase);

        
$description self::makeDescription($testCase);

        
$icon self::makeIcon($type);

        
$color self::makeColor($type);

        return new 
self($testCaseName$description$type$icon$color$throwable);
    }

    
/**
     * Get the test case description.
     */
    
public static function makeDescription(TestCase $testCase): string
    
{
        
$name $testCase->getName(false);

        if (
$testCase instanceof HasPrintableTestCaseName) {
            return 
$name;
        }

        
// First, lets replace underscore by spaces.
        
$name str_replace('_'' '$name);

        
// Then, replace upper cases by spaces.
        
$name = (string) preg_replace('/([A-Z])/'' $1'$name);

        
// Finally, if it starts with `test`, we remove it.
        
$name = (string) preg_replace('/^test/'''$name);

        
// Removes spaces
        
$name trim($name);

        
// Lower case everything
        
$name mb_strtolower($name);

        
// Add the dataset name if it has one
        
if ($dataName $testCase->dataName()) {
            if (
is_int($dataName)) {
                
$name .= sprintf(' with data set #%d'$dataName);
            } else {
                
$name .= sprintf(' with data set "%s"'$dataName);
            }
        }

        return 
$name;
    }

    
/**
     * Get the test case icon.
     */
    
public static function makeIcon(string $type): string
    
{
        switch (
$type) {
            case 
self::FAIL:
                return 
'⨯';
            case 
self::SKIPPED:
                return 
'-';
            case 
self::RISKY:
                return 
'!';
            case 
self::INCOMPLETE:
                return 
'…';
            case 
self::WARN:
                return 
'!';
            case 
self::RUNS:
                return 
'•';
            default:
                return 
'✓';
        }
    }

    
/**
     * Get the test case color.
     */
    
public static function makeColor(string $type): string
    
{
        switch (
$type) {
            case 
self::FAIL:
                return 
'red';
            case 
self::SKIPPED:
            case 
self::INCOMPLETE:
            case 
self::RISKY:
            case 
self::WARN:
            case 
self::RUNS:
                return 
'yellow';
            default:
                return 
'green';
        }
    }
}
Онлайн: 0
Реклама