Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
17 changes: 2 additions & 15 deletions tests/Event/CollectTestResultSubscriberTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
}
}
17 changes: 2 additions & 15 deletions tests/Event/PrintReportSubscriberTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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();
}
}
28 changes: 27 additions & 1 deletion tests/ExtensionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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 {
Expand All @@ -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;
}
}
55 changes: 55 additions & 0 deletions tests/Fixtures/TelemetryInfoFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?php

declare(strict_types=1);

namespace Boundwize\Pyrameter\Tests\Fixtures;

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 ReflectionClass;

use function class_exists;
use function str_replace;

final class TelemetryInfoFactory
{
public static function create(): Info
{
$duration = Duration::fromSecondsAndNanoseconds(0, 0);
$memoryUsage = MemoryUsage::fromBytes(0);
$snapshotArguments = [
HRTime::fromSecondsAndNanoseconds(0, 0),
$memoryUsage,
$memoryUsage,
new GarbageCollectorStatus(0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, false, false, false, 0),
];
$infoArguments = [$duration, $memoryUsage, $duration, $memoryUsage];

$cpuTimeClass = str_replace('Info', 'CpuTime', Info::class);

if (class_exists($cpuTimeClass)) {
$cpuTime = (new ReflectionClass($cpuTimeClass))
->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]);
}
}
Loading