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/allure-framework/allure-phpunit/src/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/allure-framework/allure-phpunit/src/AllureAdapter.php
<?php

declare(strict_types=1);

namespace Qameta\Allure\PHPUnit;

use LogicException;
use Qameta\Allure\Model\ContainerResult;
use Qameta\Allure\Model\Parameter;
use Qameta\Allure\Model\TestResult;
use Qameta\Allure\PHPUnit\Internal\TestInfo;
use Qameta\Allure\PHPUnit\Internal\TestRunInfo;
use Qameta\Allure\PHPUnit\Internal\TestStartInfo;
use Throwable;

final class AllureAdapter implements AllureAdapterInterface
{
    private static ?AllureAdapterInterface $instance = null;

    /**
     * @var array<string, TestStartInfo>
     */
    private array $lastStarts = [];

    /**
     * @var array<string, TestRunInfo>
     */
    private array $lastRuns = [];

    private ?Throwable $lastException = null;

    private function __construct()
    {
    }

    public static function getInstance(): AllureAdapterInterface
    {
        return self::$instance ??= new self();
    }

    public static function setInstance(AllureAdapterInterface $instance): void
    {
        self::$instance = $instance;
    }

    public static function reset(): void
    {
        self::$instance = null;
    }

    public function resetLastException(): void
    {
        $this->lastException = null;
    }

    public function setLastException(Throwable $e): void
    {
        $this->lastException = $e;
    }

    public function getLastException(): ?Throwable
    {
        return $this->lastException;
    }

    public function registerStart(ContainerResult $containerResult, TestResult $testResult, TestInfo $info): string
    {
        $this->lastStarts[$info->getTest()] = new TestStartInfo(
            containerId: $containerResult->getUuid(),
            testId: $testResult->getUuid(),
        );

        return $testResult->getUuid();
    }

    public function getContainerId(TestInfo $info): string
    {
        $startInfo = $this->lastStarts[$info->getTest()] ?? null;

        return $startInfo?->getContainerId()
            ?? throw new LogicException("Container not registered: {$info->getTest()}");
    }

    public function getTestId(TestInfo $info): string
    {
        $startInfo = $this->lastStarts[$info->getTest()] ?? null;

        return $startInfo?->getTestId()
            ?? throw new LogicException("Test not registered: {$info->getTest()}");
    }

    public function registerRun(TestResult $testResult, TestInfo $info): TestRunInfo
    {
        $testCaseId = $this->buildTestCaseId($testResult, $info);
        $historyId = $this->buildHistoryId($testResult, $info, $testCaseId);

        $previousRunInfo = $this->lastRuns[$historyId] ?? null;
        $currentRunInfo = new TestRunInfo(
            testInfo: $info,
            uuid: $testResult->getUuid(),
            rerunOf: $previousRunInfo?->getUuid(),
            runIndex: 1 + ($previousRunInfo?->getRunIndex() ?? -1),
            testCaseId: $testCaseId,
            historyId: $historyId,
        );
        $this->lastRuns[$historyId] = $currentRunInfo;

        return $currentRunInfo;
    }

    /**
     * @param TestResult $test
     * @return list<Parameter>
     */
    private function getIncludedParameters(TestResult $test): array
    {
        return array_values(
            array_filter(
                $test->getParameters(),
                fn (Parameter $parameter): bool => $parameter->getExcluded() !== true,
            ),
        );
    }

    private function buildTestCaseId(TestResult $test, TestInfo $info): string
    {
        $parameterNames = implode(
            '::',
            array_map(
                fn (Parameter $parameter): string => $parameter->getName(),
                $this->getIncludedParameters($test),
            ),
        );

        return md5("{$info->getName()}::{$parameterNames}");
    }

    private function buildHistoryId(TestResult $test, TestInfo $info, string $testCaseId): string
    {
        $parameterValues = implode(
            '::',
            array_map(
                fn (Parameter $parameter) => $parameter->getValue() ?? '',
                $this->getIncludedParameters($test),
            ),
        );

        return md5("{$testCaseId}::{$info->getName()}::{$parameterValues}");
    }
}

Spamworldpro Mini