1
0
mirror of https://github.com/php/pie.git synced 2026-03-23 23:12:17 +01:00
Files
archived-pie/test/unit/SelfManage/Update/ReleaseIsNewerTest.php
2026-03-17 11:39:48 +00:00

104 lines
6.9 KiB
PHP

<?php
declare(strict_types=1);
namespace Php\PieUnitTest\SelfManage\Update;
use Php\Pie\SelfManage\Update\Channel;
use Php\Pie\SelfManage\Update\ReleaseIsNewer;
use Php\Pie\SelfManage\Update\ReleaseMetadata;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
#[CoversClass(ReleaseIsNewer::class)]
final class ReleaseIsNewerTest extends TestCase
{
/** @return array<non-empty-string, array{0: Channel, 1: non-empty-string, 2: non-empty-string, 3: bool}> */
public static function provider(): array
{
return [
'stable-oldstable-to-newstable' => [Channel::Stable, '1.0.0', '1.0.1', true],
'stable-newstable-to-oldstable' => [Channel::Stable, '1.0.1', '1.0.0', false],
'stable-oldstable-to-newpreview' => [Channel::Stable, '1.0.0', '1.0.1-rc1', false],
'stable-newstable-to-newpreview' => [Channel::Stable, '1.0.1', '1.0.1-rc1', false],
'stable-stable-to-nightly' => [Channel::Stable, '1.0.0', 'dev-main', false],
'stable-oldpreview-to-newpreview' => [Channel::Stable, '1.0.1-rc1', '1.0.1-rc2', false],
'stable-newpreview-to-oldpreview' => [Channel::Stable, '1.0.1-rc2', '1.0.1-rc1', false],
'stable-preview-to-oldstable' => [Channel::Stable, '1.0.1-rc1', '1.0.0', true],
'stable-preview-to-newstable' => [Channel::Stable, '1.0.1-rc1', '1.0.1', true],
'stable-preview-to-nightly' => [Channel::Stable, '1.0.1-rc1', 'dev-main', false],
'stable-nightly-to-nightly' => [Channel::Stable, 'dev-main', 'dev-main', false],
'stable-nightly-to-stable' => [Channel::Stable, 'dev-main', '1.0.0', true],
'stable-nightly-to-preview' => [Channel::Stable, 'dev-main', '1.0.1-rc1', false],
'stable-nightly2-to-nightly' => [Channel::Stable, '1.2.1@86e1b52', 'dev-main', false],
'stable-nightly2-to-stable' => [Channel::Stable, '1.2.1@86e1b52', '1.0.0', true],
'stable-nightly2-to-preview' => [Channel::Stable, '1.2.1@86e1b52', '1.0.1-rc1', false],
'stable-nightly3-to-nightly' => [Channel::Stable, '1.2.1-alpha.2@86e1b52', 'dev-main', false],
'stable-nightly3-to-stable' => [Channel::Stable, '1.2.1-alpha.2@86e1b52', '1.0.0', true],
'stable-nightly3-to-preview' => [Channel::Stable, '1.2.1-alpha.2@86e1b52', '1.0.1-rc1', false],
'preview-oldstable-to-newstable' => [Channel::Preview, '1.0.0', '1.0.1', true],
'preview-newstable-to-oldstable' => [Channel::Preview, '1.0.1', '1.0.0', false],
'preview-oldstable-to-newpreview' => [Channel::Preview, '1.0.0', '1.0.1-rc1', true],
'preview-newstable-to-newpreview' => [Channel::Preview, '1.0.1', '1.0.1-rc1', false],
'preview-stable-to-nightly' => [Channel::Preview, '1.0.0', 'dev-main', false],
'preview-oldpreview-to-newpreview' => [Channel::Preview, '1.0.1-rc1', '1.0.1-rc2', true],
'preview-newpreview-to-oldpreview' => [Channel::Preview, '1.0.1-rc2', '1.0.1-rc1', false],
'preview-preview-to-oldstable' => [Channel::Preview, '1.0.1-rc1', '1.0.0', false],
'preview-preview-to-newstable' => [Channel::Preview, '1.0.1-rc1', '1.0.1', true],
'preview-preview-to-nightly' => [Channel::Preview, '1.0.1-rc1', 'dev-main', false],
'preview-nightly-to-nightly' => [Channel::Preview, 'dev-main', 'dev-main', false],
'preview-nightly-to-stable' => [Channel::Preview, 'dev-main', '1.0.0', true],
'preview-nightly-to-preview' => [Channel::Preview, 'dev-main', '1.0.1-rc1', true],
'preview-nightly2-to-nightly' => [Channel::Preview, '1.2.1@86e1b52', 'dev-main', false],
'preview-nightly2-to-stable' => [Channel::Preview, '1.2.1@86e1b52', '1.0.0', true],
'preview-nightly2-to-preview' => [Channel::Preview, '1.2.1@86e1b52', '1.0.1-rc1', true],
'preview-nightly3-to-nightly' => [Channel::Preview, '1.2.1-alpha.2@86e1b52', 'dev-main', false],
'preview-nightly3-to-stable' => [Channel::Preview, '1.2.1-alpha.2@86e1b52', '1.0.0', true],
'preview-nightly3-to-preview' => [Channel::Preview, '1.2.1-alpha.2@86e1b52', '1.0.1-rc1', true],
'nightly-oldstable-to-newstable' => [Channel::Nightly, '1.0.0', '1.0.1', true],
'nightly-newstable-to-oldstable' => [Channel::Nightly, '1.0.1', '1.0.0', false],
'nightly-oldstable-to-newpreview' => [Channel::Nightly, '1.0.0', '1.0.1-rc1', true],
'nightly-newstable-to-newpreview' => [Channel::Nightly, '1.0.1', '1.0.1-rc1', false],
'nightly-stable-to-nightly' => [Channel::Nightly, '1.0.0', 'dev-main', true],
'nightly-oldpreview-to-newpreview' => [Channel::Nightly, '1.0.1-rc1', '1.0.1-rc2', true],
'nightly-newpreview-to-oldpreview' => [Channel::Nightly, '1.0.1-rc2', '1.0.1-rc1', false],
'nightly-preview-to-oldstable' => [Channel::Nightly, '1.0.1-rc1', '1.0.0', false],
'nightly-preview-to-newstable' => [Channel::Nightly, '1.0.1-rc1', '1.0.1', true],
'nightly-preview-to-nightly' => [Channel::Nightly, '1.0.1-rc1', 'dev-main', true],
'nightly-nightly-to-nightly' => [Channel::Nightly, 'dev-main', 'dev-main', true],
'nightly-nightly-to-stable' => [Channel::Nightly, 'dev-main', '1.0.0', false],
'nightly-nightly-to-preview' => [Channel::Nightly, 'dev-main', '1.0.1-rc1', false],
'nightly-nightly2-to-nightly' => [Channel::Nightly, '1.2.1@86e1b52', 'dev-main', true],
'nightly-nightly2-to-stable' => [Channel::Nightly, '1.2.1@86e1b52', '1.0.0', false],
'nightly-nightly2-to-preview' => [Channel::Nightly, '1.2.1@86e1b52', '1.0.1-rc1', false],
'nightly-nightly3-to-nightly' => [Channel::Nightly, '1.2.1-alpha.2@86e1b52', 'dev-main', true],
'nightly-nightly3-to-stable' => [Channel::Nightly, '1.2.1-alpha.2@86e1b52', '1.0.0', false],
'nightly-nightly3-to-preview' => [Channel::Nightly, '1.2.1-alpha.2@86e1b52', '1.0.1-rc1', false],
];
}
/**
* @param non-empty-string $currentPieVersion
* @param non-empty-string $newReleaseTag
*/
#[DataProvider('provider')]
public function testReleaseIsNewerForChannel(
Channel $updateChannel,
string $currentPieVersion,
string $newReleaseTag,
bool $shouldUpgrade,
): void {
self::assertSame(
$shouldUpgrade,
ReleaseIsNewer::forChannel(
$updateChannel,
$currentPieVersion,
new ReleaseMetadata($newReleaseTag, 'ignored'),
),
);
}
}