From 925098ba469973ae81e5f0c12dcc40cbda6b928e Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Fri, 19 Jun 2026 07:30:05 +0700 Subject: [PATCH 1/3] Update PHPUnit requirement to include version 13.0 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 2303d7a..9c010bb 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,7 @@ "license": "MIT", "require": { "php": "^8.2", - "phpunit/phpunit": "^11.0 || ^12.0", + "phpunit/phpunit": "^11.0 || ^12.0 || ^13.0", "nikic/php-parser": "^5.0" }, "autoload": { From 1cc9b9af93f68c0b1f0f4da8055f3f6c20462460 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Fri, 19 Jun 2026 07:39:19 +0700 Subject: [PATCH 2/3] fix test --- .../Event/CollectTestResultSubscriberTest.php | 17 ++--------- tests/Event/PrintReportSubscriberTest.php | 17 ++--------- tests/ExtensionTest.php | 28 ++++++++++++++++++- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/tests/Event/CollectTestResultSubscriberTest.php b/tests/Event/CollectTestResultSubscriberTest.php index 9a130cb..4fc8b66 100644 --- a/tests/Event/CollectTestResultSubscriberTest.php +++ b/tests/Event/CollectTestResultSubscriberTest.php @@ -10,16 +10,12 @@ use Boundwize\Pyrameter\TestCollector; use Boundwize\Pyrameter\TestKind; use Boundwize\Pyrameter\Tests\Fixtures\SimpleUnitFixture; +use Boundwize\Pyrameter\Tests\Fixtures\TelemetryInfoFactory; use Boundwize\Pyrameter\UsageClassifier; use PHPUnit\Event\Code\Phpt; use PHPUnit\Event\Code\TestDox; use PHPUnit\Event\Code\TestMethod; -use PHPUnit\Event\Telemetry\Duration; -use PHPUnit\Event\Telemetry\GarbageCollectorStatus; -use PHPUnit\Event\Telemetry\HRTime; use PHPUnit\Event\Telemetry\Info; -use PHPUnit\Event\Telemetry\MemoryUsage; -use PHPUnit\Event\Telemetry\Snapshot; use PHPUnit\Event\Test\Finished; use PHPUnit\Event\TestData\DataFromDataProvider; use PHPUnit\Event\TestData\TestDataCollection; @@ -187,15 +183,6 @@ private function finishedDataProviderTestMethod( private function telemetryInfo(): Info { - $duration = Duration::fromSecondsAndNanoseconds(0, 0); - $memoryUsage = MemoryUsage::fromBytes(0); - $snapshot = new Snapshot( - HRTime::fromSecondsAndNanoseconds(0, 0), - $memoryUsage, - $memoryUsage, - new GarbageCollectorStatus(0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, false, false, false, 0), - ); - - return new Info($snapshot, $duration, $memoryUsage, $duration, $memoryUsage); + return TelemetryInfoFactory::create(); } } diff --git a/tests/Event/PrintReportSubscriberTest.php b/tests/Event/PrintReportSubscriberTest.php index dec58bb..11a445f 100644 --- a/tests/Event/PrintReportSubscriberTest.php +++ b/tests/Event/PrintReportSubscriberTest.php @@ -9,13 +9,9 @@ use Boundwize\Pyrameter\Report\PyramidReporter; use Boundwize\Pyrameter\TestCollector; use Boundwize\Pyrameter\TestKind; +use Boundwize\Pyrameter\Tests\Fixtures\TelemetryInfoFactory; use Boundwize\Pyrameter\ValueObject\TestRecord; -use PHPUnit\Event\Telemetry\Duration; -use PHPUnit\Event\Telemetry\GarbageCollectorStatus; -use PHPUnit\Event\Telemetry\HRTime; use PHPUnit\Event\Telemetry\Info; -use PHPUnit\Event\Telemetry\MemoryUsage; -use PHPUnit\Event\Telemetry\Snapshot; use PHPUnit\Event\TestRunner\ExecutionFinished; use PHPUnit\Framework\TestCase; @@ -64,15 +60,6 @@ public function testItTerminatesWithFailureWhenTargetsAreViolatedAndFailOnViolat private function telemetryInfo(): Info { - $duration = Duration::fromSecondsAndNanoseconds(0, 0); - $memoryUsage = MemoryUsage::fromBytes(0); - $snapshot = new Snapshot( - HRTime::fromSecondsAndNanoseconds(0, 0), - $memoryUsage, - $memoryUsage, - new GarbageCollectorStatus(0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, false, false, false, 0), - ); - - return new Info($snapshot, $duration, $memoryUsage, $duration, $memoryUsage); + return TelemetryInfoFactory::create(); } } diff --git a/tests/ExtensionTest.php b/tests/ExtensionTest.php index ad09fbf..44eaa0d 100644 --- a/tests/ExtensionTest.php +++ b/tests/ExtensionTest.php @@ -12,8 +12,11 @@ use PHPUnit\TextUI\Configuration\Configuration; use ReflectionClass; use ReflectionProperty; +use RuntimeException; +use function class_exists; use function file_put_contents; +use function str_replace; use function sys_get_temp_dir; use function unlink; @@ -39,7 +42,7 @@ public function testItBootstrapsThePhpunitSubscribers(): void try { (new Extension())->bootstrap( (new ReflectionClass(Configuration::class))->newInstanceWithoutConstructor(), - new ExtensionFacade(), + $this->extensionFacade(), ParameterCollection::fromArray(['config' => $configFile]), ); } finally { @@ -49,4 +52,27 @@ public function testItBootstrapsThePhpunitSubscribers(): void self::addToAssertionCount(1); } + + private function extensionFacade(): ExtensionFacade + { + $reflection = new ReflectionClass(ExtensionFacade::class); + + if ($reflection->isInterface()) { + $concreteFacadeClass = str_replace('Facade', 'ExtensionFacade', ExtensionFacade::class); + + if (! class_exists($concreteFacadeClass)) { + throw new RuntimeException('Could not find the PHPUnit extension facade'); + } + + $reflection = new ReflectionClass($concreteFacadeClass); + } + + $facade = $reflection->newInstanceWithoutConstructor(); + + if (! $facade instanceof ExtensionFacade) { + throw new RuntimeException('Could not create a PHPUnit extension facade'); + } + + return $facade; + } } From f7bc349d9f551688ef622c6d6bf5babc760f8698 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Fri, 19 Jun 2026 07:39:23 +0700 Subject: [PATCH 3/3] fix test --- tests/Fixtures/TelemetryInfoFactory.php | 55 +++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 tests/Fixtures/TelemetryInfoFactory.php diff --git a/tests/Fixtures/TelemetryInfoFactory.php b/tests/Fixtures/TelemetryInfoFactory.php new file mode 100644 index 0000000..1578b23 --- /dev/null +++ b/tests/Fixtures/TelemetryInfoFactory.php @@ -0,0 +1,55 @@ +getMethod('fromSecondsAndNanoseconds') + ->invoke(null, 0, 0); + + $snapshotArguments = [...$snapshotArguments, $cpuTime, $cpuTime, $cpuTime]; + $infoArguments = [ + ...$infoArguments, + $cpuTime, + $cpuTime, + $cpuTime, + $cpuTime, + $cpuTime, + $cpuTime, + ]; + } + + $snapshot = (new ReflectionClass(Snapshot::class))->newInstanceArgs($snapshotArguments); + + return (new ReflectionClass(Info::class))->newInstanceArgs([$snapshot, ...$infoArguments]); + } +}