?????????? ????????? - ??????????????? - /home/agenciai/public_html/cd38d8/Value.tar
???????
ThrowableBuilder.php 0000644 00000002227 15130305461 0010514 0 ustar 00 <?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\Code; use PHPUnit\Event\NoPreviousThrowableException; use PHPUnit\Framework\Exception; use PHPUnit\Util\Filter; use PHPUnit\Util\ThrowableToStringMapper; /** * @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 ThrowableBuilder { /** * @throws Exception * @throws NoPreviousThrowableException */ public static function from(\Throwable $t): Throwable { $previous = $t->getPrevious(); if ($previous !== null) { $previous = self::from($previous); } return new Throwable( $t::class, $t->getMessage(), ThrowableToStringMapper::map($t), Filter::getFilteredStacktrace($t, false), $previous, ); } } Telemetry/Duration.php 0000644 00000006727 15130305461 0011026 0 ustar 00 <?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\Telemetry; use function floor; use function sprintf; use PHPUnit\Event\InvalidArgumentException; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class Duration { private readonly int $seconds; private readonly int $nanoseconds; /** * @throws InvalidArgumentException */ public static function fromSecondsAndNanoseconds(int $seconds, int $nanoseconds): self { return new self( $seconds, $nanoseconds, ); } /** * @throws InvalidArgumentException */ private function __construct(int $seconds, int $nanoseconds) { $this->ensureNotNegative($seconds, 'seconds'); $this->ensureNotNegative($nanoseconds, 'nanoseconds'); $this->ensureNanoSecondsInRange($nanoseconds); $this->seconds = $seconds; $this->nanoseconds = $nanoseconds; } public function seconds(): int { return $this->seconds; } public function nanoseconds(): int { return $this->nanoseconds; } public function asFloat(): float { return $this->seconds() + ($this->nanoseconds() / 1000000000); } public function asString(): string { $seconds = $this->seconds(); $minutes = 0; $hours = 0; if ($seconds > 60 * 60) { $hours = floor($seconds / 60 / 60); $seconds -= ($hours * 60 * 60); } if ($seconds > 60) { $minutes = floor($seconds / 60); $seconds -= ($minutes * 60); } return sprintf( '%02d:%02d:%02d.%09d', $hours, $minutes, $seconds, $this->nanoseconds(), ); } public function equals(self $other): bool { return $this->seconds === $other->seconds && $this->nanoseconds === $other->nanoseconds; } public function isLessThan(self $other): bool { if ($this->seconds < $other->seconds) { return true; } if ($this->seconds > $other->seconds) { return false; } return $this->nanoseconds < $other->nanoseconds; } public function isGreaterThan(self $other): bool { if ($this->seconds > $other->seconds) { return true; } if ($this->seconds < $other->seconds) { return false; } return $this->nanoseconds > $other->nanoseconds; } /** * @throws InvalidArgumentException */ private function ensureNotNegative(int $value, string $type): void { if ($value < 0) { throw new InvalidArgumentException( sprintf( 'Value for %s must not be negative.', $type, ), ); } } /** * @throws InvalidArgumentException */ private function ensureNanoSecondsInRange(int $nanoseconds): void { if ($nanoseconds > 999999999) { throw new InvalidArgumentException( 'Value for nanoseconds must not be greater than 999999999.', ); } } } Telemetry/Info.php 0000644 00000004501 15130305461 0010120 0 ustar 00 <?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\Telemetry; use function sprintf; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class Info { private readonly Snapshot $current; private readonly Duration $durationSinceStart; private readonly MemoryUsage $memorySinceStart; private readonly Duration $durationSincePrevious; private readonly MemoryUsage $memorySincePrevious; public function __construct(Snapshot $current, Duration $durationSinceStart, MemoryUsage $memorySinceStart, Duration $durationSincePrevious, MemoryUsage $memorySincePrevious) { $this->current = $current; $this->durationSinceStart = $durationSinceStart; $this->memorySinceStart = $memorySinceStart; $this->durationSincePrevious = $durationSincePrevious; $this->memorySincePrevious = $memorySincePrevious; } public function time(): HRTime { return $this->current->time(); } public function memoryUsage(): MemoryUsage { return $this->current->memoryUsage(); } public function peakMemoryUsage(): MemoryUsage { return $this->current->peakMemoryUsage(); } public function durationSinceStart(): Duration { return $this->durationSinceStart; } public function memoryUsageSinceStart(): MemoryUsage { return $this->memorySinceStart; } public function durationSincePrevious(): Duration { return $this->durationSincePrevious; } public function memoryUsageSincePrevious(): MemoryUsage { return $this->memorySincePrevious; } public function garbageCollectorStatus(): GarbageCollectorStatus { return $this->current->garbageCollectorStatus(); } public function asString(): string { return sprintf( '[%s / %s] [%d bytes]', $this->durationSinceStart()->asString(), $this->durationSincePrevious()->asString(), $this->memoryUsage()->bytes(), ); } } Telemetry/GarbageCollectorStatus.php 0000644 00000011250 15130305461 0013627 0 ustar 00 <?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\Telemetry; use PHPUnit\Event\RuntimeException; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class GarbageCollectorStatus { private readonly int $runs; private readonly int $collected; private readonly int $threshold; private readonly int $roots; private readonly ?float $applicationTime; private readonly ?float $collectorTime; private readonly ?float $destructorTime; private readonly ?float $freeTime; private readonly ?bool $running; private readonly ?bool $protected; private readonly ?bool $full; private readonly ?int $bufferSize; public function __construct(int $runs, int $collected, int $threshold, int $roots, ?float $applicationTime, ?float $collectorTime, ?float $destructorTime, ?float $freeTime, ?bool $running, ?bool $protected, ?bool $full, ?int $bufferSize) { $this->runs = $runs; $this->collected = $collected; $this->threshold = $threshold; $this->roots = $roots; $this->applicationTime = $applicationTime; $this->collectorTime = $collectorTime; $this->destructorTime = $destructorTime; $this->freeTime = $freeTime; $this->running = $running; $this->protected = $protected; $this->full = $full; $this->bufferSize = $bufferSize; } public function runs(): int { return $this->runs; } public function collected(): int { return $this->collected; } public function threshold(): int { return $this->threshold; } public function roots(): int { return $this->roots; } /** * @psalm-assert-if-true !null $this->applicationTime * @psalm-assert-if-true !null $this->collectorTime * @psalm-assert-if-true !null $this->destructorTime * @psalm-assert-if-true !null $this->freeTime * @psalm-assert-if-true !null $this->running * @psalm-assert-if-true !null $this->protected * @psalm-assert-if-true !null $this->full * @psalm-assert-if-true !null $this->bufferSize */ public function hasExtendedInformation(): bool { return $this->running !== null; } /** * @throws RuntimeException on PHP < 8.3 */ public function applicationTime(): float { if ($this->applicationTime === null) { throw new RuntimeException('Information not available'); } return $this->applicationTime; } /** * @throws RuntimeException on PHP < 8.3 */ public function collectorTime(): float { if ($this->collectorTime === null) { throw new RuntimeException('Information not available'); } return $this->collectorTime; } /** * @throws RuntimeException on PHP < 8.3 */ public function destructorTime(): float { if ($this->destructorTime === null) { throw new RuntimeException('Information not available'); } return $this->destructorTime; } /** * @throws RuntimeException on PHP < 8.3 */ public function freeTime(): float { if ($this->freeTime === null) { throw new RuntimeException('Information not available'); } return $this->freeTime; } /** * @throws RuntimeException on PHP < 8.3 */ public function isRunning(): bool { if ($this->running === null) { throw new RuntimeException('Information not available'); } return $this->running; } /** * @throws RuntimeException on PHP < 8.3 */ public function isProtected(): bool { if ($this->protected === null) { throw new RuntimeException('Information not available'); } return $this->protected; } /** * @throws RuntimeException on PHP < 8.3 */ public function isFull(): bool { if ($this->full === null) { throw new RuntimeException('Information not available'); } return $this->full; } /** * @throws RuntimeException on PHP < 8.3 */ public function bufferSize(): int { if ($this->bufferSize === null) { throw new RuntimeException('Information not available'); } return $this->bufferSize; } } Telemetry/System.php 0000644 00000002502 15130305461 0010510 0 ustar 00 <?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\Telemetry; /** * @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 System { private readonly StopWatch $stopWatch; private readonly MemoryMeter $memoryMeter; private readonly GarbageCollectorStatusProvider $garbageCollectorStatusProvider; public function __construct(StopWatch $stopWatch, MemoryMeter $memoryMeter, GarbageCollectorStatusProvider $garbageCollectorStatusProvider) { $this->stopWatch = $stopWatch; $this->memoryMeter = $memoryMeter; $this->garbageCollectorStatusProvider = $garbageCollectorStatusProvider; } public function snapshot(): Snapshot { return new Snapshot( $this->stopWatch->current(), $this->memoryMeter->memoryUsage(), $this->memoryMeter->peakMemoryUsage(), $this->garbageCollectorStatusProvider->status(), ); } } Telemetry/StopWatch.php 0000644 00000001061 15130305461 0011137 0 ustar 00 <?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\Telemetry; /** * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @internal This interface is not covered by the backward compatibility promise for PHPUnit */ interface StopWatch { public function current(): HRTime; } Telemetry/GarbageCollectorStatusProvider.php 0000644 00000001125 15130305461 0015342 0 ustar 00 <?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\Telemetry; /** * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @internal This interface is not covered by the backward compatibility promise for PHPUnit */ interface GarbageCollectorStatusProvider { public function status(): GarbageCollectorStatus; } Telemetry/MemoryUsage.php 0000644 00000001546 15130305461 0011470 0 ustar 00 <?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\Telemetry; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class MemoryUsage { private readonly int $bytes; public static function fromBytes(int $bytes): self { return new self($bytes); } private function __construct(int $bytes) { $this->bytes = $bytes; } public function bytes(): int { return $this->bytes; } public function diff(self $other): self { return self::fromBytes($this->bytes - $other->bytes); } } Telemetry/SystemStopWatchWithOffset.php 0000644 00000002104 15130305461 0014346 0 ustar 00 <?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\Telemetry; use function hrtime; use PHPUnit\Event\InvalidArgumentException; /** * @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 * * @codeCoverageIgnore */ final class SystemStopWatchWithOffset implements StopWatch { private ?HRTime $offset; public function __construct(HRTime $offset) { $this->offset = $offset; } /** * @throws InvalidArgumentException */ public function current(): HRTime { if ($this->offset !== null) { $offset = $this->offset; $this->offset = null; return $offset; } return HRTime::fromSecondsAndNanoseconds(...hrtime()); } } Telemetry/MemoryMeter.php 0000644 00000001161 15130305461 0011471 0 ustar 00 <?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\Telemetry; /** * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit * * @internal This interface is not covered by the backward compatibility promise for PHPUnit */ interface MemoryMeter { public function memoryUsage(): MemoryUsage; public function peakMemoryUsage(): MemoryUsage; } Telemetry/SystemMemoryMeter.php 0000644 00000001551 15130305461 0012701 0 ustar 00 <?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\Telemetry; use function memory_get_peak_usage; use function memory_get_usage; /** * @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 SystemMemoryMeter implements MemoryMeter { public function memoryUsage(): MemoryUsage { return MemoryUsage::fromBytes(memory_get_usage(true)); } public function peakMemoryUsage(): MemoryUsage { return MemoryUsage::fromBytes(memory_get_peak_usage(true)); } } Telemetry/Php81GarbageCollectorStatusProvider.php 0000644 00000002045 15130305461 0016165 0 ustar 00 <?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\Telemetry; use function gc_status; /** * @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 * * @codeCoverageIgnore */ final class Php81GarbageCollectorStatusProvider implements GarbageCollectorStatusProvider { public function status(): GarbageCollectorStatus { $status = gc_status(); return new GarbageCollectorStatus( $status['runs'], $status['collected'], $status['threshold'], $status['roots'], null, null, null, null, null, null, null, null, ); } } Telemetry/Snapshot.php 0000644 00000002641 15130305461 0011027 0 ustar 00 <?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\Telemetry; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class Snapshot { private readonly HRTime $time; private readonly MemoryUsage $memoryUsage; private readonly MemoryUsage $peakMemoryUsage; private readonly GarbageCollectorStatus $garbageCollectorStatus; public function __construct(HRTime $time, MemoryUsage $memoryUsage, MemoryUsage $peakMemoryUsage, GarbageCollectorStatus $garbageCollectorStatus) { $this->time = $time; $this->memoryUsage = $memoryUsage; $this->peakMemoryUsage = $peakMemoryUsage; $this->garbageCollectorStatus = $garbageCollectorStatus; } public function time(): HRTime { return $this->time; } public function memoryUsage(): MemoryUsage { return $this->memoryUsage; } public function peakMemoryUsage(): MemoryUsage { return $this->peakMemoryUsage; } public function garbageCollectorStatus(): GarbageCollectorStatus { return $this->garbageCollectorStatus; } } Telemetry/HRTime.php 0000644 00000005046 15130305461 0010362 0 ustar 00 <?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\Telemetry; use function sprintf; use PHPUnit\Event\InvalidArgumentException; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class HRTime { private readonly int $seconds; private readonly int $nanoseconds; /** * @throws InvalidArgumentException */ public static function fromSecondsAndNanoseconds(int $seconds, int $nanoseconds): self { return new self( $seconds, $nanoseconds, ); } /** * @throws InvalidArgumentException */ private function __construct(int $seconds, int $nanoseconds) { $this->ensureNotNegative($seconds, 'seconds'); $this->ensureNotNegative($nanoseconds, 'nanoseconds'); $this->ensureNanoSecondsInRange($nanoseconds); $this->seconds = $seconds; $this->nanoseconds = $nanoseconds; } public function seconds(): int { return $this->seconds; } public function nanoseconds(): int { return $this->nanoseconds; } public function duration(self $start): Duration { $seconds = $this->seconds - $start->seconds(); $nanoseconds = $this->nanoseconds - $start->nanoseconds(); if ($nanoseconds < 0) { $seconds--; $nanoseconds += 1000000000; } if ($seconds < 0) { return Duration::fromSecondsAndNanoseconds(0, 0); } return Duration::fromSecondsAndNanoseconds( $seconds, $nanoseconds, ); } /** * @throws InvalidArgumentException */ private function ensureNotNegative(int $value, string $type): void { if ($value < 0) { throw new InvalidArgumentException( sprintf( 'Value for %s must not be negative.', $type, ), ); } } /** * @throws InvalidArgumentException */ private function ensureNanoSecondsInRange(int $nanoseconds): void { if ($nanoseconds > 999999999) { throw new InvalidArgumentException( 'Value for nanoseconds must not be greater than 999999999.', ); } } } Telemetry/Php83GarbageCollectorStatusProvider.php 0000644 00000002230 15130305461 0016163 0 ustar 00 <?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\Telemetry; use function gc_status; /** * @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 Php83GarbageCollectorStatusProvider implements GarbageCollectorStatusProvider { public function status(): GarbageCollectorStatus { $status = gc_status(); return new GarbageCollectorStatus( $status['runs'], $status['collected'], $status['threshold'], $status['roots'], $status['application_time'], $status['collector_time'], $status['destructor_time'], $status['free_time'], $status['running'], $status['protected'], $status['full'], $status['buffer_size'], ); } } Telemetry/SystemStopWatch.php 0000644 00000001416 15130305461 0012350 0 ustar 00 <?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\Telemetry; use function hrtime; use PHPUnit\Event\InvalidArgumentException; /** * @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 SystemStopWatch implements StopWatch { /** * @throws InvalidArgumentException */ public function current(): HRTime { return HRTime::fromSecondsAndNanoseconds(...hrtime()); } } ComparisonFailure.php 0000644 00000001753 15130305461 0010703 0 ustar 00 <?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\Code; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class ComparisonFailure { private readonly string $expected; private readonly string $actual; private readonly string $diff; public function __construct(string $expected, string $actual, string $diff) { $this->expected = $expected; $this->actual = $actual; $this->diff = $diff; } public function expected(): string { return $this->expected; } public function actual(): string { return $this->actual; } public function diff(): string { return $this->diff; } } TestSuite/TestSuite.php 0000644 00000003206 15130305461 0011136 0 ustar 00 <?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\TestSuite; use PHPUnit\Event\Code\TestCollection; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ abstract class TestSuite { /** * @psalm-var non-empty-string */ private readonly string $name; private readonly int $count; private readonly TestCollection $tests; /** * @psalm-param non-empty-string $name */ public function __construct(string $name, int $size, TestCollection $tests) { $this->name = $name; $this->count = $size; $this->tests = $tests; } /** * @psalm-return non-empty-string */ public function name(): string { return $this->name; } public function count(): int { return $this->count; } public function tests(): TestCollection { return $this->tests; } /** * @psalm-assert-if-true TestSuiteWithName $this */ public function isWithName(): bool { return false; } /** * @psalm-assert-if-true TestSuiteForTestClass $this */ public function isForTestClass(): bool { return false; } /** * @psalm-assert-if-true TestSuiteForTestMethodWithDataProvider $this */ public function isForTestMethodWithDataProvider(): bool { return false; } } TestSuite/TestSuiteBuilder.php 0000644 00000006552 15130305461 0012454 0 ustar 00 <?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\TestSuite; use function explode; use PHPUnit\Event\Code\Test; use PHPUnit\Event\Code\TestCollection; use PHPUnit\Event\RuntimeException; use PHPUnit\Framework\DataProviderTestSuite; use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestSuite as FrameworkTestSuite; use PHPUnit\Runner\PhptTestCase; use ReflectionClass; use ReflectionException; use ReflectionMethod; /** * @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 TestSuiteBuilder { /** * @throws RuntimeException */ public static function from(FrameworkTestSuite $testSuite): TestSuite { $tests = []; self::process($testSuite, $tests); if ($testSuite instanceof DataProviderTestSuite) { [$className, $methodName] = explode('::', $testSuite->name()); try { $reflector = new ReflectionMethod($className, $methodName); return new TestSuiteForTestMethodWithDataProvider( $testSuite->name(), $testSuite->count(), TestCollection::fromArray($tests), $className, $methodName, $reflector->getFileName(), $reflector->getStartLine(), ); // @codeCoverageIgnoreStart } catch (ReflectionException $e) { throw new RuntimeException( $e->getMessage(), $e->getCode(), $e, ); } // @codeCoverageIgnoreEnd } if ($testSuite->isForTestClass()) { try { $reflector = new ReflectionClass($testSuite->name()); return new TestSuiteForTestClass( $testSuite->name(), $testSuite->count(), TestCollection::fromArray($tests), $reflector->getFileName(), $reflector->getStartLine(), ); // @codeCoverageIgnoreStart } catch (ReflectionException $e) { throw new RuntimeException( $e->getMessage(), $e->getCode(), $e, ); } // @codeCoverageIgnoreEnd } return new TestSuiteWithName( $testSuite->name(), $testSuite->count(), TestCollection::fromArray($tests), ); } /** * @psalm-param list<Test> $tests */ private static function process(FrameworkTestSuite $testSuite, array &$tests): void { foreach ($testSuite->getIterator() as $test) { if ($test instanceof FrameworkTestSuite) { self::process($test, $tests); continue; } if ($test instanceof TestCase || $test instanceof PhptTestCase) { $tests[] = $test->valueObjectForEvents(); } } } } TestSuite/TestSuiteWithName.php 0000644 00000001152 15130305461 0012571 0 ustar 00 <?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\TestSuite; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class TestSuiteWithName extends TestSuite { /** * @psalm-assert-if-true TestSuiteWithName $this */ public function isWithName(): bool { return true; } } TestSuite/TestSuiteForTestClass.php 0000644 00000002635 15130305461 0013440 0 ustar 00 <?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\TestSuite; use PHPUnit\Event\Code\TestCollection; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class TestSuiteForTestClass extends TestSuite { /** * @psalm-var class-string */ private readonly string $className; private readonly string $file; private readonly int $line; /** * @psalm-param class-string $name */ public function __construct(string $name, int $size, TestCollection $tests, string $file, int $line) { parent::__construct($name, $size, $tests); $this->className = $name; $this->file = $file; $this->line = $line; } /** * @psalm-return class-string */ public function className(): string { return $this->className; } public function file(): string { return $this->file; } public function line(): int { return $this->line; } /** * @psalm-assert-if-true TestSuiteForTestClass $this */ public function isForTestClass(): bool { return true; } } TestSuite/TestSuiteForTestMethodWithDataProvider.php 0000644 00000003564 15130305461 0016756 0 ustar 00 <?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\TestSuite; use PHPUnit\Event\Code\TestCollection; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class TestSuiteForTestMethodWithDataProvider extends TestSuite { /** * @psalm-var class-string */ private readonly string $className; /** * @psalm-var non-empty-string */ private readonly string $methodName; private readonly string $file; private readonly int $line; /** * @psalm-param non-empty-string $name * @psalm-param class-string $className * @psalm-param non-empty-string $methodName */ public function __construct(string $name, int $size, TestCollection $tests, string $className, string $methodName, string $file, int $line) { parent::__construct($name, $size, $tests); $this->className = $className; $this->methodName = $methodName; $this->file = $file; $this->line = $line; } /** * @psalm-return class-string */ public function className(): string { return $this->className; } /** * @psalm-return non-empty-string */ public function methodName(): string { return $this->methodName; } public function file(): string { return $this->file; } public function line(): int { return $this->line; } /** * @psalm-assert-if-true TestSuiteForTestMethodWithDataProvider $this */ public function isForTestMethodWithDataProvider(): bool { return true; } } Runtime/PHP.php 0000644 00000004537 15130305461 0007336 0 ustar 00 <?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\Runtime; use const PHP_EXTRA_VERSION; use const PHP_MAJOR_VERSION; use const PHP_MINOR_VERSION; use const PHP_RELEASE_VERSION; use const PHP_SAPI; use const PHP_VERSION; use const PHP_VERSION_ID; use function array_merge; use function get_loaded_extensions; use function sort; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class PHP { private readonly string $version; private readonly int $versionId; private readonly int $majorVersion; private readonly int $minorVersion; private readonly int $releaseVersion; private readonly string $extraVersion; private readonly string $sapi; /** * @psalm-var list<string> */ private readonly array $extensions; public function __construct() { $this->version = PHP_VERSION; $this->versionId = PHP_VERSION_ID; $this->majorVersion = PHP_MAJOR_VERSION; $this->minorVersion = PHP_MINOR_VERSION; $this->releaseVersion = PHP_RELEASE_VERSION; $this->extraVersion = PHP_EXTRA_VERSION; $this->sapi = PHP_SAPI; $extensions = array_merge( get_loaded_extensions(true), get_loaded_extensions(), ); sort($extensions); $this->extensions = $extensions; } public function version(): string { return $this->version; } public function sapi(): string { return $this->sapi; } public function majorVersion(): int { return $this->majorVersion; } public function minorVersion(): int { return $this->minorVersion; } public function releaseVersion(): int { return $this->releaseVersion; } public function extraVersion(): string { return $this->extraVersion; } public function versionId(): int { return $this->versionId; } /** * @psalm-return list<string> */ public function extensions(): array { return $this->extensions; } } Runtime/PHPUnit.php 0000644 00000001563 15130305461 0010172 0 ustar 00 <?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\Runtime; use PHPUnit\Runner\Version; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class PHPUnit { private readonly string $versionId; private readonly string $releaseSeries; public function __construct() { $this->versionId = Version::id(); $this->releaseSeries = Version::series(); } public function versionId(): string { return $this->versionId; } public function releaseSeries(): string { return $this->releaseSeries; } } Runtime/Runtime.php 0000644 00000002527 15130305461 0010327 0 ustar 00 <?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\Runtime; use function sprintf; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class Runtime { private readonly OperatingSystem $operatingSystem; private readonly PHP $php; private readonly PHPUnit $phpunit; public function __construct() { $this->operatingSystem = new OperatingSystem; $this->php = new PHP; $this->phpunit = new PHPUnit; } public function asString(): string { $php = $this->php(); return sprintf( 'PHPUnit %s using PHP %s (%s) on %s', $this->phpunit()->versionId(), $php->version(), $php->sapi(), $this->operatingSystem()->operatingSystem(), ); } public function operatingSystem(): OperatingSystem { return $this->operatingSystem; } public function php(): PHP { return $this->php; } public function phpunit(): PHPUnit { return $this->phpunit; } } Runtime/OperatingSystem.php 0000644 00000001671 15130305461 0012040 0 ustar 00 <?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\Runtime; use const PHP_OS; use const PHP_OS_FAMILY; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class OperatingSystem { private readonly string $operatingSystem; private readonly string $operatingSystemFamily; public function __construct() { $this->operatingSystem = PHP_OS; $this->operatingSystemFamily = PHP_OS_FAMILY; } public function operatingSystem(): string { return $this->operatingSystem; } public function operatingSystemFamily(): string { return $this->operatingSystemFamily; } } Test/TestMethod.php 0000644 00000007067 15130305461 0010264 0 ustar 00 <?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\Code; use function assert; use function is_int; use function sprintf; use PHPUnit\Event\TestData\TestDataCollection; use PHPUnit\Metadata\MetadataCollection; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class TestMethod extends Test { /** * @psalm-var class-string */ private readonly string $className; /** * @psalm-var non-empty-string */ private readonly string $methodName; /** * @psalm-var non-negative-int */ private readonly int $line; private readonly TestDox $testDox; private readonly MetadataCollection $metadata; private readonly TestDataCollection $testData; /** * @psalm-param class-string $className * @psalm-param non-empty-string $methodName * @psalm-param non-empty-string $file * @psalm-param non-negative-int $line */ public function __construct(string $className, string $methodName, string $file, int $line, TestDox $testDox, MetadataCollection $metadata, TestDataCollection $testData) { parent::__construct($file); $this->className = $className; $this->methodName = $methodName; $this->line = $line; $this->testDox = $testDox; $this->metadata = $metadata; $this->testData = $testData; } /** * @psalm-return class-string */ public function className(): string { return $this->className; } /** * @psalm-return non-empty-string */ public function methodName(): string { return $this->methodName; } /** * @psalm-return non-negative-int */ public function line(): int { return $this->line; } public function testDox(): TestDox { return $this->testDox; } public function metadata(): MetadataCollection { return $this->metadata; } public function testData(): TestDataCollection { return $this->testData; } /** * @psalm-assert-if-true TestMethod $this */ public function isTestMethod(): bool { return true; } /** * @psalm-return non-empty-string */ public function id(): string { $buffer = $this->className . '::' . $this->methodName; if ($this->testData()->hasDataFromDataProvider()) { $buffer .= '#' . $this->testData->dataFromDataProvider()->dataSetName(); } return $buffer; } /** * @psalm-return non-empty-string */ public function nameWithClass(): string { return $this->className . '::' . $this->name(); } /** * @psalm-return non-empty-string */ public function name(): string { if (!$this->testData->hasDataFromDataProvider()) { return $this->methodName; } $dataSetName = $this->testData->dataFromDataProvider()->dataSetName(); if (is_int($dataSetName)) { $dataSetName = sprintf( ' with data set #%d', $dataSetName, ); } else { $dataSetName = sprintf( ' with data set "%s"', $dataSetName, ); } return $this->methodName . $dataSetName; } } Test/TestDoxBuilder.php 0000644 00000003115 15130305461 0011073 0 ustar 00 <?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\Code; use PHPUnit\Event\TestData\MoreThanOneDataSetFromDataProviderException; use PHPUnit\Framework\TestCase; use PHPUnit\Logging\TestDox\NamePrettifier; /** * @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 TestDoxBuilder { /** * @throws MoreThanOneDataSetFromDataProviderException */ public static function fromTestCase(TestCase $testCase): TestDox { $prettifier = new NamePrettifier; return new TestDox( $prettifier->prettifyTestClassName($testCase::class), $prettifier->prettifyTestCase($testCase, false), $prettifier->prettifyTestCase($testCase, true), ); } /** * @psalm-param class-string $className * @psalm-param non-empty-string $methodName */ public static function fromClassNameAndMethodName(string $className, string $methodName): TestDox { $prettifier = new NamePrettifier; $prettifiedMethodName = $prettifier->prettifyTestMethodName($methodName); return new TestDox( $prettifier->prettifyTestClassName($className), $prettifiedMethodName, $prettifiedMethodName, ); } } Test/TestCollectionIterator.php 0000644 00000002235 15130305461 0012641 0 ustar 00 <?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\Code; use function count; use Iterator; /** * @template-implements Iterator<int, Test> * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class TestCollectionIterator implements Iterator { /** * @psalm-var list<Test> */ private readonly array $tests; private int $position = 0; public function __construct(TestCollection $tests) { $this->tests = $tests->asArray(); } public function rewind(): void { $this->position = 0; } public function valid(): bool { return $this->position < count($this->tests); } public function key(): int { return $this->position; } public function current(): Test { return $this->tests[$this->position]; } public function next(): void { $this->position++; } } Test/TestData/TestDataCollectionIterator.php 0000644 00000002257 15130305461 0015150 0 ustar 00 <?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\TestData; use function count; use Iterator; /** * @template-implements Iterator<int, TestData> * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class TestDataCollectionIterator implements Iterator { /** * @psalm-var list<TestData> */ private readonly array $data; private int $position = 0; public function __construct(TestDataCollection $data) { $this->data = $data->asArray(); } public function rewind(): void { $this->position = 0; } public function valid(): bool { return $this->position < count($this->data); } public function key(): int { return $this->position; } public function current(): TestData { return $this->data[$this->position]; } public function next(): void { $this->position++; } } Test/TestData/DataFromTestDependency.php 0000644 00000001335 15130305461 0014241 0 ustar 00 <?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\TestData; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class DataFromTestDependency extends TestData { public static function from(string $data): self { return new self($data); } /** * @psalm-assert-if-true DataFromTestDependency $this */ public function isFromTestDependency(): bool { return true; } } Test/TestData/DataFromDataProvider.php 0000644 00000003027 15130305461 0013707 0 ustar 00 <?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\TestData; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class DataFromDataProvider extends TestData { private readonly int|string $dataSetName; private readonly string $dataAsStringForResultOutput; public static function from(int|string $dataSetName, string $data, string $dataAsStringForResultOutput): self { return new self($dataSetName, $data, $dataAsStringForResultOutput); } protected function __construct(int|string $dataSetName, string $data, string $dataAsStringForResultOutput) { $this->dataSetName = $dataSetName; $this->dataAsStringForResultOutput = $dataAsStringForResultOutput; parent::__construct($data); } public function dataSetName(): int|string { return $this->dataSetName; } /** * @internal This method is not covered by the backward compatibility promise for PHPUnit */ public function dataAsStringForResultOutput(): string { return $this->dataAsStringForResultOutput; } /** * @psalm-assert-if-true DataFromDataProvider $this */ public function isFromDataProvider(): bool { return true; } } Test/TestData/TestDataCollection.php 0000644 00000004771 15130305461 0013441 0 ustar 00 <?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\TestData; use function count; use Countable; use IteratorAggregate; /** * @template-implements IteratorAggregate<int, TestData> * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class TestDataCollection implements Countable, IteratorAggregate { /** * @psalm-var list<TestData> */ private readonly array $data; private ?DataFromDataProvider $fromDataProvider = null; /** * @psalm-param list<TestData> $data * * @throws MoreThanOneDataSetFromDataProviderException */ public static function fromArray(array $data): self { return new self(...$data); } /** * @throws MoreThanOneDataSetFromDataProviderException */ private function __construct(TestData ...$data) { $this->ensureNoMoreThanOneDataFromDataProvider($data); $this->data = $data; } /** * @psalm-return list<TestData> */ public function asArray(): array { return $this->data; } public function count(): int { return count($this->data); } /** * @psalm-assert-if-true !null $this->fromDataProvider */ public function hasDataFromDataProvider(): bool { return $this->fromDataProvider !== null; } /** * @throws NoDataSetFromDataProviderException */ public function dataFromDataProvider(): DataFromDataProvider { if (!$this->hasDataFromDataProvider()) { throw new NoDataSetFromDataProviderException; } return $this->fromDataProvider; } public function getIterator(): TestDataCollectionIterator { return new TestDataCollectionIterator($this); } /** * @psalm-param list<TestData> $data * * @throws MoreThanOneDataSetFromDataProviderException */ private function ensureNoMoreThanOneDataFromDataProvider(array $data): void { foreach ($data as $_data) { if ($_data->isFromDataProvider()) { if ($this->fromDataProvider !== null) { throw new MoreThanOneDataSetFromDataProviderException; } $this->fromDataProvider = $_data; } } } } Test/TestData/TestData.php 0000644 00000001706 15130305461 0011420 0 ustar 00 <?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\TestData; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ abstract class TestData { private readonly string $data; protected function __construct(string $data) { $this->data = $data; } public function data(): string { return $this->data; } /** * @psalm-assert-if-true DataFromDataProvider $this */ public function isFromDataProvider(): bool { return false; } /** * @psalm-assert-if-true DataFromTestDependency $this */ public function isFromTestDependency(): bool { return false; } } Test/Phpt.php 0000644 00000001510 15130305461 0007102 0 ustar 00 <?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\Code; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class Phpt extends Test { /** * @psalm-assert-if-true Phpt $this */ public function isPhpt(): bool { return true; } /** * @psalm-return non-empty-string */ public function id(): string { return $this->file(); } /** * @psalm-return non-empty-string */ public function name(): string { return $this->file(); } } Test/TestMethodBuilder.php 0000644 00000006150 15130305461 0011563 0 ustar 00 <?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\Code; use const DEBUG_BACKTRACE_IGNORE_ARGS; use const DEBUG_BACKTRACE_PROVIDE_OBJECT; use function assert; use function debug_backtrace; use function is_numeric; use PHPUnit\Event\Facade as EventFacade; use PHPUnit\Event\TestData\DataFromDataProvider; use PHPUnit\Event\TestData\DataFromTestDependency; use PHPUnit\Event\TestData\MoreThanOneDataSetFromDataProviderException; use PHPUnit\Event\TestData\TestDataCollection; use PHPUnit\Framework\TestCase; use PHPUnit\Metadata\Parser\Registry as MetadataRegistry; use PHPUnit\Util\Exporter; use PHPUnit\Util\Reflection; /** * @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 TestMethodBuilder { /** * @throws MoreThanOneDataSetFromDataProviderException */ public static function fromTestCase(TestCase $testCase): TestMethod { $methodName = $testCase->name(); assert(!empty($methodName)); $location = Reflection::sourceLocationFor($testCase::class, $methodName); return new TestMethod( $testCase::class, $methodName, $location['file'], $location['line'], TestDoxBuilder::fromTestCase($testCase), MetadataRegistry::parser()->forClassAndMethod($testCase::class, $methodName), self::dataFor($testCase), ); } /** * @throws NoTestCaseObjectOnCallStackException */ public static function fromCallStack(): TestMethod { foreach (debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS) as $frame) { if (isset($frame['object']) && $frame['object'] instanceof TestCase) { return $frame['object']->valueObjectForEvents(); } } throw new NoTestCaseObjectOnCallStackException; } /** * @throws MoreThanOneDataSetFromDataProviderException */ private static function dataFor(TestCase $testCase): TestDataCollection { $testData = []; if ($testCase->usesDataProvider()) { $dataSetName = $testCase->dataName(); if (is_numeric($dataSetName)) { $dataSetName = (int) $dataSetName; } $testData[] = DataFromDataProvider::from( $dataSetName, Exporter::export($testCase->providedData(), EventFacade::emitter()->exportsObjects()), $testCase->dataSetAsStringWithData(), ); } if ($testCase->hasDependencyInput()) { $testData[] = DataFromTestDependency::from( Exporter::export($testCase->dependencyInput(), EventFacade::emitter()->exportsObjects()), ); } return TestDataCollection::fromArray($testData); } } Test/TestCollection.php 0000644 00000002365 15130305461 0011133 0 ustar 00 <?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\Code; use function count; use Countable; use IteratorAggregate; /** * @template-implements IteratorAggregate<int, Test> * * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class TestCollection implements Countable, IteratorAggregate { /** * @psalm-var list<Test> */ private readonly array $tests; /** * @psalm-param list<Test> $tests */ public static function fromArray(array $tests): self { return new self(...$tests); } private function __construct(Test ...$tests) { $this->tests = $tests; } /** * @psalm-return list<Test> */ public function asArray(): array { return $this->tests; } public function count(): int { return count($this->tests); } public function getIterator(): TestCollectionIterator { return new TestCollectionIterator($this); } } Test/TestDox.php 0000644 00000002444 15130305461 0007570 0 ustar 00 <?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\Code; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class TestDox { private readonly string $prettifiedClassName; private readonly string $prettifiedMethodName; private readonly string $prettifiedAndColorizedMethodName; public function __construct(string $prettifiedClassName, string $prettifiedMethodName, string $prettifiedAndColorizedMethodName) { $this->prettifiedClassName = $prettifiedClassName; $this->prettifiedMethodName = $prettifiedMethodName; $this->prettifiedAndColorizedMethodName = $prettifiedAndColorizedMethodName; } public function prettifiedClassName(): string { return $this->prettifiedClassName; } public function prettifiedMethodName(bool $colorize = false): string { if ($colorize) { return $this->prettifiedAndColorizedMethodName; } return $this->prettifiedMethodName; } } Test/Test.php 0000644 00000002365 15130305461 0007117 0 ustar 00 <?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\Code; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ abstract class Test { /** * @psalm-var non-empty-string */ private readonly string $file; /** * @psalm-param non-empty-string $file */ public function __construct(string $file) { $this->file = $file; } /** * @psalm-return non-empty-string */ public function file(): string { return $this->file; } /** * @psalm-assert-if-true TestMethod $this */ public function isTestMethod(): bool { return false; } /** * @psalm-assert-if-true Phpt $this */ public function isPhpt(): bool { return false; } /** * @psalm-return non-empty-string */ abstract public function id(): string; /** * @psalm-return non-empty-string */ abstract public function name(): string; } ClassMethod.php 0000644 00000002234 15130305461 0007462 0 ustar 00 <?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\Code; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class ClassMethod { /** * @psalm-var class-string */ private readonly string $className; /** * @psalm-var non-empty-string */ private readonly string $methodName; /** * @psalm-param class-string $className * @psalm-param non-empty-string $methodName */ public function __construct(string $className, string $methodName) { $this->className = $className; $this->methodName = $methodName; } /** * @psalm-return class-string */ public function className(): string { return $this->className; } /** * @psalm-return non-empty-string */ public function methodName(): string { return $this->methodName; } } ComparisonFailureBuilder.php 0000644 00000003534 15130305461 0012211 0 ustar 00 <?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\Code; use function is_bool; use function is_scalar; use function print_r; use PHPUnit\Framework\ExpectationFailedException; use Throwable; /** * @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 ComparisonFailureBuilder { public static function from(Throwable $t): ?ComparisonFailure { if (!$t instanceof ExpectationFailedException) { return null; } if (!$t->getComparisonFailure()) { return null; } $expectedAsString = $t->getComparisonFailure()->getExpectedAsString(); if (empty($expectedAsString)) { $expectedAsString = self::mapScalarValueToString($t->getComparisonFailure()->getExpected()); } $actualAsString = $t->getComparisonFailure()->getActualAsString(); if (empty($actualAsString)) { $actualAsString = self::mapScalarValueToString($t->getComparisonFailure()->getActual()); } return new ComparisonFailure( $expectedAsString, $actualAsString, $t->getComparisonFailure()->getDiff(), ); } private static function mapScalarValueToString(mixed $value): string { if ($value === null) { return 'null'; } if (is_bool($value)) { return $value ? 'true' : 'false'; } if (is_scalar($value)) { return print_r($value, true); } return ''; } } Throwable.php 0000644 00000004527 15130305461 0007212 0 ustar 00 <?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\Code; use const PHP_EOL; use PHPUnit\Event\NoPreviousThrowableException; /** * @psalm-immutable * * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ final class Throwable { /** * @psalm-var class-string */ private readonly string $className; private readonly string $message; private readonly string $description; private readonly string $stackTrace; private readonly ?Throwable $previous; /** * @psalm-param class-string $className */ public function __construct(string $className, string $message, string $description, string $stackTrace, ?self $previous) { $this->className = $className; $this->message = $message; $this->description = $description; $this->stackTrace = $stackTrace; $this->previous = $previous; } /** * @throws NoPreviousThrowableException */ public function asString(): string { $buffer = $this->description(); if (!empty($this->stackTrace())) { $buffer .= PHP_EOL . $this->stackTrace(); } if ($this->hasPrevious()) { $buffer .= PHP_EOL . 'Caused by' . PHP_EOL . $this->previous()->asString(); } return $buffer; } /** * @psalm-return class-string */ public function className(): string { return $this->className; } public function message(): string { return $this->message; } public function description(): string { return $this->description; } public function stackTrace(): string { return $this->stackTrace; } /** * @psalm-assert-if-true !null $this->previous */ public function hasPrevious(): bool { return $this->previous !== null; } /** * @throws NoPreviousThrowableException */ public function previous(): self { if ($this->previous === null) { throw new NoPreviousThrowableException; } return $this->previous; } }
| ver. 1.6 |
Github
|
.
| PHP 8.2.30 | ??????????? ?????????: 0 |
proxy
|
phpinfo
|
???????????