Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

DispatchingEmitter.php

Namespace

PHPUnit\Event

File

vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php

View source
<?php

declare (strict_types=1);

/*
 * This file is part of PHPUnit.
 *
 * (c) Sebastian Bergmann <sebastian@phpunit.de>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace PHPUnit\Event;

use PHPUnit\Event\Code\ClassMethod;
use PHPUnit\Event\Code\ComparisonFailure;
use PHPUnit\Event\Code\Throwable;
use PHPUnit\Event\Test\DataProviderMethodCalled;
use PHPUnit\Event\Test\DataProviderMethodFinished;
use PHPUnit\Event\TestSuite\Filtered as TestSuiteFiltered;
use PHPUnit\Event\TestSuite\Finished as TestSuiteFinished;
use PHPUnit\Event\TestSuite\Loaded as TestSuiteLoaded;
use PHPUnit\Event\TestSuite\Skipped as TestSuiteSkipped;
use PHPUnit\Event\TestSuite\Sorted as TestSuiteSorted;
use PHPUnit\Event\TestSuite\Started as TestSuiteStarted;
use PHPUnit\Event\TestSuite\TestSuite;
use PHPUnit\Framework\Constraint;
use PHPUnit\TextUI\Configuration\Configuration;
use PHPUnit\Util\Exporter;

/**
 * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
 *
 * @internal This class is not covered by the backward compatibility promise for PHPUnit
 */
final class DispatchingEmitter implements Emitter {
    private readonly Dispatcher $dispatcher;
    private readonly Telemetry\System $system;
    private readonly Telemetry\Snapshot $startSnapshot;
    private Telemetry\Snapshot $previousSnapshot;
    private bool $exportObjects = false;
    public function __construct(Dispatcher $dispatcher, Telemetry\System $system) {
        $this->dispatcher = $dispatcher;
        $this->system = $system;
        $this->startSnapshot = $system->snapshot();
        $this->previousSnapshot = $this->startSnapshot;
    }
    
    /**
     * @deprecated
     */
    public function exportObjects() : void {
        $this->exportObjects = true;
    }
    
    /**
     * @deprecated
     */
    public function exportsObjects() : bool {
        return $this->exportObjects;
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function applicationStarted() : void {
        $this->dispatcher
            ->dispatch(new Application\Started($this->telemetryInfo(), new Runtime\Runtime()));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerStarted() : void {
        $this->dispatcher
            ->dispatch(new TestRunner\Started($this->telemetryInfo()));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerConfigured(Configuration $configuration) : void {
        $this->dispatcher
            ->dispatch(new TestRunner\Configured($this->telemetryInfo(), $configuration));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerBootstrapFinished(string $filename) : void {
        $this->dispatcher
            ->dispatch(new TestRunner\BootstrapFinished($this->telemetryInfo(), $filename));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerLoadedExtensionFromPhar(string $filename, string $name, string $version) : void {
        $this->dispatcher
            ->dispatch(new TestRunner\ExtensionLoadedFromPhar($this->telemetryInfo(), $filename, $name, $version));
    }
    
    /**
     * @psalm-param class-string $className
     * @psalm-param array<string, string> $parameters
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerBootstrappedExtension(string $className, array $parameters) : void {
        $this->dispatcher
            ->dispatch(new TestRunner\ExtensionBootstrapped($this->telemetryInfo(), $className, $parameters));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function dataProviderMethodCalled(ClassMethod $testMethod, ClassMethod $dataProviderMethod) : void {
        $this->dispatcher
            ->dispatch(new DataProviderMethodCalled($this->telemetryInfo(), $testMethod, $dataProviderMethod));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function dataProviderMethodFinished(ClassMethod $testMethod, ClassMethod ...$calledMethods) : void {
        $this->dispatcher
            ->dispatch(new DataProviderMethodFinished($this->telemetryInfo(), $testMethod, ...$calledMethods));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testSuiteLoaded(TestSuite $testSuite) : void {
        $this->dispatcher
            ->dispatch(new TestSuiteLoaded($this->telemetryInfo(), $testSuite));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testSuiteFiltered(TestSuite $testSuite) : void {
        $this->dispatcher
            ->dispatch(new TestSuiteFiltered($this->telemetryInfo(), $testSuite));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testSuiteSorted(int $executionOrder, int $executionOrderDefects, bool $resolveDependencies) : void {
        $this->dispatcher
            ->dispatch(new TestSuiteSorted($this->telemetryInfo(), $executionOrder, $executionOrderDefects, $resolveDependencies));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerEventFacadeSealed() : void {
        $this->dispatcher
            ->dispatch(new TestRunner\EventFacadeSealed($this->telemetryInfo()));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerExecutionStarted(TestSuite $testSuite) : void {
        $this->dispatcher
            ->dispatch(new TestRunner\ExecutionStarted($this->telemetryInfo(), $testSuite));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerDisabledGarbageCollection() : void {
        $this->dispatcher
            ->dispatch(new TestRunner\GarbageCollectionDisabled($this->telemetryInfo()));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerTriggeredGarbageCollection() : void {
        $this->dispatcher
            ->dispatch(new TestRunner\GarbageCollectionTriggered($this->telemetryInfo()));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testSuiteSkipped(TestSuite $testSuite, string $message) : void {
        $this->dispatcher
            ->dispatch(new TestSuiteSkipped($this->telemetryInfo(), $testSuite, $message));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testSuiteStarted(TestSuite $testSuite) : void {
        $this->dispatcher
            ->dispatch(new TestSuiteStarted($this->telemetryInfo(), $testSuite));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testPreparationStarted(Code\Test $test) : void {
        $this->dispatcher
            ->dispatch(new Test\PreparationStarted($this->telemetryInfo(), $test));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testPreparationFailed(Code\Test $test) : void {
        $this->dispatcher
            ->dispatch(new Test\PreparationFailed($this->telemetryInfo(), $test));
    }
    
    /**
     * @psalm-param class-string $testClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testBeforeFirstTestMethodCalled(string $testClassName, ClassMethod $calledMethod) : void {
        $this->dispatcher
            ->dispatch(new Test\BeforeFirstTestMethodCalled($this->telemetryInfo(), $testClassName, $calledMethod));
    }
    
    /**
     * @psalm-param class-string $testClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testBeforeFirstTestMethodErrored(string $testClassName, ClassMethod $calledMethod, Throwable $throwable) : void {
        $this->dispatcher
            ->dispatch(new Test\BeforeFirstTestMethodErrored($this->telemetryInfo(), $testClassName, $calledMethod, $throwable));
    }
    
    /**
     * @psalm-param class-string $testClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testBeforeFirstTestMethodFinished(string $testClassName, ClassMethod ...$calledMethods) : void {
        $this->dispatcher
            ->dispatch(new Test\BeforeFirstTestMethodFinished($this->telemetryInfo(), $testClassName, ...$calledMethods));
    }
    
    /**
     * @psalm-param class-string $testClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testBeforeTestMethodCalled(string $testClassName, ClassMethod $calledMethod) : void {
        $this->dispatcher
            ->dispatch(new Test\BeforeTestMethodCalled($this->telemetryInfo(), $testClassName, $calledMethod));
    }
    
    /**
     * @psalm-param class-string $testClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testBeforeTestMethodFinished(string $testClassName, ClassMethod ...$calledMethods) : void {
        $this->dispatcher
            ->dispatch(new Test\BeforeTestMethodFinished($this->telemetryInfo(), $testClassName, ...$calledMethods));
    }
    
    /**
     * @psalm-param class-string $testClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testPreConditionCalled(string $testClassName, ClassMethod $calledMethod) : void {
        $this->dispatcher
            ->dispatch(new Test\PreConditionCalled($this->telemetryInfo(), $testClassName, $calledMethod));
    }
    
    /**
     * @psalm-param class-string $testClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testPreConditionFinished(string $testClassName, ClassMethod ...$calledMethods) : void {
        $this->dispatcher
            ->dispatch(new Test\PreConditionFinished($this->telemetryInfo(), $testClassName, ...$calledMethods));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testPrepared(Code\Test $test) : void {
        $this->dispatcher
            ->dispatch(new Test\Prepared($this->telemetryInfo(), $test));
    }
    
    /**
     * @psalm-param class-string $className
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRegisteredComparator(string $className) : void {
        $this->dispatcher
            ->dispatch(new Test\ComparatorRegistered($this->telemetryInfo(), $className));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     *
     * @deprecated
     */
    public function testAssertionSucceeded(mixed $value, Constraint\Constraint $constraint, string $message) : void {
        $this->dispatcher
            ->dispatch(new Test\AssertionSucceeded($this->telemetryInfo(), Exporter::export($value, $this->exportObjects), $constraint->toString($this->exportObjects), $constraint->count(), $message));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     *
     * @deprecated
     */
    public function testAssertionFailed(mixed $value, Constraint\Constraint $constraint, string $message) : void {
        $this->dispatcher
            ->dispatch(new Test\AssertionFailed($this->telemetryInfo(), Exporter::export($value, $this->exportObjects), $constraint->toString($this->exportObjects), $constraint->count(), $message));
    }
    
    /**
     * @psalm-param class-string $className
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testCreatedMockObject(string $className) : void {
        $this->dispatcher
            ->dispatch(new Test\MockObjectCreated($this->telemetryInfo(), $className));
    }
    
    /**
     * @psalm-param list<class-string> $interfaces
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testCreatedMockObjectForIntersectionOfInterfaces(array $interfaces) : void {
        $this->dispatcher
            ->dispatch(new Test\MockObjectForIntersectionOfInterfacesCreated($this->telemetryInfo(), $interfaces));
    }
    
    /**
     * @psalm-param trait-string $traitName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testCreatedMockObjectForTrait(string $traitName) : void {
        $this->dispatcher
            ->dispatch(new Test\MockObjectForTraitCreated($this->telemetryInfo(), $traitName));
    }
    
    /**
     * @psalm-param class-string $className
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testCreatedMockObjectForAbstractClass(string $className) : void {
        $this->dispatcher
            ->dispatch(new Test\MockObjectForAbstractClassCreated($this->telemetryInfo(), $className));
    }
    
    /**
     * @psalm-param class-string $originalClassName
     * @psalm-param class-string $mockClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testCreatedMockObjectFromWsdl(string $wsdlFile, string $originalClassName, string $mockClassName, array $methods, bool $callOriginalConstructor, array $options) : void {
        $this->dispatcher
            ->dispatch(new Test\MockObjectFromWsdlCreated($this->telemetryInfo(), $wsdlFile, $originalClassName, $mockClassName, $methods, $callOriginalConstructor, $options));
    }
    
    /**
     * @psalm-param class-string $className
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testCreatedPartialMockObject(string $className, string ...$methodNames) : void {
        $this->dispatcher
            ->dispatch(new Test\PartialMockObjectCreated($this->telemetryInfo(), $className, ...$methodNames));
    }
    
    /**
     * @psalm-param class-string $className
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testCreatedTestProxy(string $className, array $constructorArguments) : void {
        $this->dispatcher
            ->dispatch(new Test\TestProxyCreated($this->telemetryInfo(), $className, Exporter::export($constructorArguments, $this->exportObjects)));
    }
    
    /**
     * @psalm-param class-string $className
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testCreatedStub(string $className) : void {
        $this->dispatcher
            ->dispatch(new Test\TestStubCreated($this->telemetryInfo(), $className));
    }
    
    /**
     * @psalm-param list<class-string> $interfaces
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testCreatedStubForIntersectionOfInterfaces(array $interfaces) : void {
        $this->dispatcher
            ->dispatch(new Test\TestStubForIntersectionOfInterfacesCreated($this->telemetryInfo(), $interfaces));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testErrored(Code\Test $test, Throwable $throwable) : void {
        $this->dispatcher
            ->dispatch(new Test\Errored($this->telemetryInfo(), $test, $throwable));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testFailed(Code\Test $test, Throwable $throwable, ?ComparisonFailure $comparisonFailure) : void {
        $this->dispatcher
            ->dispatch(new Test\Failed($this->telemetryInfo(), $test, $throwable, $comparisonFailure));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testPassed(Code\Test $test) : void {
        $this->dispatcher
            ->dispatch(new Test\Passed($this->telemetryInfo(), $test));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testConsideredRisky(Code\Test $test, string $message) : void {
        $this->dispatcher
            ->dispatch(new Test\ConsideredRisky($this->telemetryInfo(), $test, $message));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testMarkedAsIncomplete(Code\Test $test, Throwable $throwable) : void {
        $this->dispatcher
            ->dispatch(new Test\MarkedIncomplete($this->telemetryInfo(), $test, $throwable));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testSkipped(Code\Test $test, string $message) : void {
        $this->dispatcher
            ->dispatch(new Test\Skipped($this->telemetryInfo(), $test, $message));
    }
    
    /**
     * @psalm-param non-empty-string $message
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testTriggeredPhpunitDeprecation(Code\Test $test, string $message) : void {
        $this->dispatcher
            ->dispatch(new Test\PhpunitDeprecationTriggered($this->telemetryInfo(), $test, $message));
    }
    
    /**
     * @psalm-param non-empty-string $message
     * @psalm-param non-empty-string $file
     * @psalm-param positive-int $line
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testTriggeredPhpDeprecation(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline, bool $ignoredByTest) : void {
        $this->dispatcher
            ->dispatch(new Test\PhpDeprecationTriggered($this->telemetryInfo(), $test, $message, $file, $line, $suppressed, $ignoredByBaseline, $ignoredByTest));
    }
    
    /**
     * @psalm-param non-empty-string $message
     * @psalm-param non-empty-string $file
     * @psalm-param positive-int $line
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testTriggeredDeprecation(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline, bool $ignoredByTest) : void {
        $this->dispatcher
            ->dispatch(new Test\DeprecationTriggered($this->telemetryInfo(), $test, $message, $file, $line, $suppressed, $ignoredByBaseline, $ignoredByTest));
    }
    
    /**
     * @psalm-param non-empty-string $message
     * @psalm-param non-empty-string $file
     * @psalm-param positive-int $line
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testTriggeredError(Code\Test $test, string $message, string $file, int $line, bool $suppressed) : void {
        $this->dispatcher
            ->dispatch(new Test\ErrorTriggered($this->telemetryInfo(), $test, $message, $file, $line, $suppressed));
    }
    
    /**
     * @psalm-param non-empty-string $message
     * @psalm-param non-empty-string $file
     * @psalm-param positive-int $line
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testTriggeredNotice(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline) : void {
        $this->dispatcher
            ->dispatch(new Test\NoticeTriggered($this->telemetryInfo(), $test, $message, $file, $line, $suppressed, $ignoredByBaseline));
    }
    
    /**
     * @psalm-param non-empty-string $message
     * @psalm-param non-empty-string $file
     * @psalm-param positive-int $line
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testTriggeredPhpNotice(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline) : void {
        $this->dispatcher
            ->dispatch(new Test\PhpNoticeTriggered($this->telemetryInfo(), $test, $message, $file, $line, $suppressed, $ignoredByBaseline));
    }
    
    /**
     * @psalm-param non-empty-string $message
     * @psalm-param non-empty-string $file
     * @psalm-param positive-int $line
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testTriggeredWarning(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline) : void {
        $this->dispatcher
            ->dispatch(new Test\WarningTriggered($this->telemetryInfo(), $test, $message, $file, $line, $suppressed, $ignoredByBaseline));
    }
    
    /**
     * @psalm-param non-empty-string $message
     * @psalm-param non-empty-string $file
     * @psalm-param positive-int $line
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testTriggeredPhpWarning(Code\Test $test, string $message, string $file, int $line, bool $suppressed, bool $ignoredByBaseline) : void {
        $this->dispatcher
            ->dispatch(new Test\PhpWarningTriggered($this->telemetryInfo(), $test, $message, $file, $line, $suppressed, $ignoredByBaseline));
    }
    
    /**
     * @psalm-param non-empty-string $message
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testTriggeredPhpunitError(Code\Test $test, string $message) : void {
        $this->dispatcher
            ->dispatch(new Test\PhpunitErrorTriggered($this->telemetryInfo(), $test, $message));
    }
    
    /**
     * @psalm-param non-empty-string $message
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testTriggeredPhpunitWarning(Code\Test $test, string $message) : void {
        $this->dispatcher
            ->dispatch(new Test\PhpunitWarningTriggered($this->telemetryInfo(), $test, $message));
    }
    
    /**
     * @psalm-param non-empty-string $output
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testPrintedUnexpectedOutput(string $output) : void {
        $this->dispatcher
            ->dispatch(new Test\PrintedUnexpectedOutput($this->telemetryInfo(), $output));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testFinished(Code\Test $test, int $numberOfAssertionsPerformed) : void {
        $this->dispatcher
            ->dispatch(new Test\Finished($this->telemetryInfo(), $test, $numberOfAssertionsPerformed));
    }
    
    /**
     * @psalm-param class-string $testClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testPostConditionCalled(string $testClassName, ClassMethod $calledMethod) : void {
        $this->dispatcher
            ->dispatch(new Test\PostConditionCalled($this->telemetryInfo(), $testClassName, $calledMethod));
    }
    
    /**
     * @psalm-param class-string $testClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testPostConditionFinished(string $testClassName, ClassMethod ...$calledMethods) : void {
        $this->dispatcher
            ->dispatch(new Test\PostConditionFinished($this->telemetryInfo(), $testClassName, ...$calledMethods));
    }
    
    /**
     * @psalm-param class-string $testClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testAfterTestMethodCalled(string $testClassName, ClassMethod $calledMethod) : void {
        $this->dispatcher
            ->dispatch(new Test\AfterTestMethodCalled($this->telemetryInfo(), $testClassName, $calledMethod));
    }
    
    /**
     * @psalm-param class-string $testClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testAfterTestMethodFinished(string $testClassName, ClassMethod ...$calledMethods) : void {
        $this->dispatcher
            ->dispatch(new Test\AfterTestMethodFinished($this->telemetryInfo(), $testClassName, ...$calledMethods));
    }
    
    /**
     * @psalm-param class-string $testClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testAfterLastTestMethodCalled(string $testClassName, ClassMethod $calledMethod) : void {
        $this->dispatcher
            ->dispatch(new Test\AfterLastTestMethodCalled($this->telemetryInfo(), $testClassName, $calledMethod));
    }
    
    /**
     * @psalm-param class-string $testClassName
     *
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testAfterLastTestMethodFinished(string $testClassName, ClassMethod ...$calledMethods) : void {
        $this->dispatcher
            ->dispatch(new Test\AfterLastTestMethodFinished($this->telemetryInfo(), $testClassName, ...$calledMethods));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testSuiteFinished(TestSuite $testSuite) : void {
        $this->dispatcher
            ->dispatch(new TestSuiteFinished($this->telemetryInfo(), $testSuite));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerTriggeredDeprecation(string $message) : void {
        $this->dispatcher
            ->dispatch(new TestRunner\DeprecationTriggered($this->telemetryInfo(), $message));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerTriggeredWarning(string $message) : void {
        $this->dispatcher
            ->dispatch(new TestRunner\WarningTriggered($this->telemetryInfo(), $message));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerEnabledGarbageCollection() : void {
        $this->dispatcher
            ->dispatch(new TestRunner\GarbageCollectionEnabled($this->telemetryInfo()));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerExecutionAborted() : void {
        $this->dispatcher
            ->dispatch(new TestRunner\ExecutionAborted($this->telemetryInfo()));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerExecutionFinished() : void {
        $this->dispatcher
            ->dispatch(new TestRunner\ExecutionFinished($this->telemetryInfo()));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function testRunnerFinished() : void {
        $this->dispatcher
            ->dispatch(new TestRunner\Finished($this->telemetryInfo()));
    }
    
    /**
     * @throws InvalidArgumentException
     * @throws UnknownEventTypeException
     */
    public function applicationFinished(int $shellExitCode) : void {
        $this->dispatcher
            ->dispatch(new Application\Finished($this->telemetryInfo(), $shellExitCode));
    }
    
    /**
     * @throws InvalidArgumentException
     */
    private function telemetryInfo() : Telemetry\Info {
        $current = $this->system
            ->snapshot();
        $info = new Telemetry\Info($current, $current->time()
            ->duration($this->startSnapshot
            ->time()), $current->memoryUsage()
            ->diff($this->startSnapshot
            ->memoryUsage()), $current->time()
            ->duration($this->previousSnapshot
            ->time()), $current->memoryUsage()
            ->diff($this->previousSnapshot
            ->memoryUsage()));
        $this->previousSnapshot = $current;
        return $info;
    }

}

Classes

Title Deprecated Summary
DispatchingEmitter @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
RSS feed
Powered by Drupal