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/AllureExtension.php
<?php

declare(strict_types=1);

namespace Qameta\Allure\PHPUnit;

use PHPUnit\Runner\AfterIncompleteTestHook;
use PHPUnit\Runner\AfterRiskyTestHook;
use PHPUnit\Runner\AfterSkippedTestHook;
use PHPUnit\Runner\AfterSuccessfulTestHook;
use PHPUnit\Runner\AfterTestErrorHook;
use PHPUnit\Runner\AfterTestFailureHook;
use PHPUnit\Runner\AfterTestHook;
use PHPUnit\Runner\AfterTestWarningHook;
use PHPUnit\Runner\BeforeTestHook;
use Qameta\Allure\Allure;
use Qameta\Allure\Model\LinkType;
use Qameta\Allure\Model\Status;
use Qameta\Allure\PHPUnit\Internal\Config;
use Qameta\Allure\PHPUnit\Internal\ConfigInterface;
use Qameta\Allure\PHPUnit\Internal\DefaultThreadDetector;
use Qameta\Allure\PHPUnit\Internal\TestLifecycle;
use Qameta\Allure\PHPUnit\Internal\TestLifecycleInterface;
use Qameta\Allure\PHPUnit\Internal\TestUpdater;
use RuntimeException;

use function file_exists;
use function is_array;

use const DIRECTORY_SEPARATOR;

final class AllureExtension implements
    BeforeTestHook,
    AfterTestHook,
    AfterTestFailureHook,
    AfterTestErrorHook,
    AfterIncompleteTestHook,
    AfterSkippedTestHook,
    AfterTestWarningHook,
    AfterRiskyTestHook,
    AfterSuccessfulTestHook
{
    private const DEFAULT_OUTPUT_DIRECTORY = 'build' . DIRECTORY_SEPARATOR . 'allure-results';

    private const DEFAULT_CONFIG_FILE = 'config' . DIRECTORY_SEPARATOR . 'allure.config.php';

    private TestLifecycleInterface $testLifecycle;

    public function __construct(
        string|array|ConfigInterface|TestLifecycleInterface|null $configOrTestLifecycle = null,
    ) {
        $this->testLifecycle = $configOrTestLifecycle instanceof TestLifecycleInterface
            ? $configOrTestLifecycle
            : $this->createTestLifecycle($configOrTestLifecycle);
    }

    private function createTestLifecycle(string|array|ConfigInterface|null $configSource): TestLifecycleInterface
    {
        $config = $configSource instanceof ConfigInterface
            ? $configSource
            : $this->loadConfig($configSource);

        $this->setupAllure($config);

        return new TestLifecycle(
            Allure::getLifecycle(),
            Allure::getConfig()->getResultFactory(),
            Allure::getConfig()->getStatusDetector(),
            $config->getThreadDetector() ?? new DefaultThreadDetector(),
            AllureAdapter::getInstance(),
            new TestUpdater(Allure::getConfig()->getLinkTemplates()),
        );
    }

    private function setupAllure(ConfigInterface $config): void
    {
        Allure::getLifecycleConfigurator()->setOutputDirectory(
            $config->getOutputDirectory() ?? self::DEFAULT_OUTPUT_DIRECTORY,
        );

        foreach ($config->getLinkTemplates() as $linkType => $linkTemplate) {
            Allure::getLifecycleConfigurator()->addLinkTemplate(
                LinkType::fromOptionalString($linkType),
                $linkTemplate,
            );
        }

        if (!empty($config->getLifecycleHooks())) {
            Allure::getLifecycleConfigurator()->addHooks(...$config->getLifecycleHooks());
        }

        $setupHook = $config->getSetupHook();
        if (isset($setupHook)) {
            $setupHook();
        }
    }

    private function loadConfig(string|array|null $configSource): ConfigInterface
    {
        return new Config(
            is_array($configSource)
                ? $configSource
                : $this->loadConfigData($configSource),
        );
    }

    private function loadConfigData(?string $configFile): array
    {
        $fileShouldExist = isset($configFile);
        $configFile ??= self::DEFAULT_CONFIG_FILE;
        if (file_exists($configFile)) {
            /** @psalm-var mixed $data */
            $data = require $configFile;

            return is_array($data)
                ? $data
                : throw new RuntimeException("Config file {$configFile} must return array");
        } elseif ($fileShouldExist) {
            throw new RuntimeException("Config file {$configFile} doesn't exist");
        }

        return [];
    }
    public function executeBeforeTest(string $test): void
    {
        $this
            ->testLifecycle
            ->switchTo($test)
            ->reset()
            ->create()
            ->updateInfo()
            ->start();
    }

    public function executeAfterTest(string $test, float $time): void
    {
        $this
            ->testLifecycle
            ->switchTo($test)
            ->stop()
            ->updateRunInfo()
            ->write();
    }

    public function executeAfterTestFailure(string $test, string $message, float $time): void
    {
        $this
            ->testLifecycle
            ->switchTo($test)
            ->updateDetectedStatus($message, Status::failed(), Status::failed());
    }

    public function executeAfterTestError(string $test, string $message, float $time): void
    {
        $this
            ->testLifecycle
            ->switchTo($test)
            ->updateDetectedStatus($message, Status::broken());
    }

    public function executeAfterIncompleteTest(string $test, string $message, float $time): void
    {
        $this
            ->testLifecycle
            ->switchTo($test)
            ->updateStatus($message, Status::broken());
    }

    public function executeAfterSkippedTest(string $test, string $message, float $time): void
    {
        $this
            ->testLifecycle
            ->switchTo($test)
            ->updateStatus($message, Status::skipped());
    }

    public function executeAfterTestWarning(string $test, string $message, float $time): void
    {
        $this
            ->testLifecycle
            ->switchTo($test)
            ->updateStatus($message, Status::broken());
    }

    public function executeAfterRiskyTest(string $test, string $message, float $time): void
    {
        $this
            ->testLifecycle
            ->switchTo($test)
            ->updateStatus($message, Status::failed());
    }

    public function executeAfterSuccessfulTest(string $test, float $time): void
    {
        $this
            ->testLifecycle
            ->switchTo($test)
            ->updateStatus(status: Status::passed());
    }
}

Spamworldpro Mini