gnu-social/vendor/padraic/phar-updater/tests/Humbug/Test/SelfUpdate/VersionParserTest.php
2020-08-07 23:42:38 +01:00

170 lines
6.0 KiB
PHP

<?php
/**
* Humbug
*
* @category Humbug
* @package Humbug
* @subpackage UnitTests
* @copyright Copyright (c) 2015 Pádraic Brady (http://blog.astrumfutura.com)
* @license https://github.com/padraic/pharupdater/blob/master/LICENSE New BSD License
*/
namespace Humbug\Test\SelfUpdate;
use Humbug\SelfUpdate\VersionParser;
class VersionParserTest extends \PHPUnit_Framework_TestCase
{
// Stable Versions
public function testShouldSelectNothingFromUnstablesIfStableRequested()
{
$versions = array('1.0.0a', '1.0.0alpha', '1.0.0-dev', 'dev-1.0.0', '1.0.0b',
'1.0.0beta', '1.0.0rc', '1.0.0RC');
$parser = new VersionParser($versions);
$this->assertSame(false, $parser->getMostRecentStable());
}
public function testShouldSelectMostRecentVersionFromStandardSelection()
{
$versions = array('1.0.0', '1.0.1', '1.1.0');
$parser = new VersionParser($versions);
$this->assertSame('1.1.0', $parser->getMostRecentStable());
}
public function testShouldSelectMostRecentVersionFromMixedSelection()
{
$versions = array('1.0.0', '1.0.1', '1.1.0', '1.2.0a', '1.2.0b', '1.1.0rc');
$parser = new VersionParser($versions);
$this->assertSame('1.1.0', $parser->getMostRecentStable());
}
public function testShouldSelectMostRecentVersionFromPrefixedSelection()
{
$versions = array('v1.0.0', 'v1.0.1', 'v1.1.0');
$parser = new VersionParser($versions);
$this->assertSame('v1.1.0', $parser->getMostRecentStable());
}
public function testShouldSelectMostRecentVersionFromPartlyPrefixedSelection()
{
$versions = array('v1.0.0', 'v1.0.1', '1.1.0');
$parser = new VersionParser($versions);
$this->assertSame('1.1.0', $parser->getMostRecentStable());
}
public function testShouldSelectMostRecentVersionFromPatchLevels()
{
$versions = array('1.0.0', '1.0.0-pl2', '1.0.0-pl3', '1.0.0-pl1');
$parser = new VersionParser($versions);
$this->assertSame('1.0.0-pl3', $parser->getMostRecentStable());
}
public function testShouldSelectMostRecentVersionFromPatchLevels2()
{
$versions = array('1.0.0', '1.0.0pl2', '1.0.0pl3', '1.0.0pl1');
$parser = new VersionParser($versions);
$this->assertSame('1.0.0pl3', $parser->getMostRecentStable());
}
// Unstable
public function testShouldSelectNothingFromUnstablesIfUnstableRequested()
{
$versions = array('1.0.0', '1.0.1', '1.1.0');
$parser = new VersionParser($versions);
$this->assertSame(false, $parser->getMostRecentUnstable());
}
public function testShouldSelectNothingFromStablesOrDevsIfUnstableRequested()
{
$versions = array('1.0.0', '1.0.1', '1.1.0-dev', 'dev-1.1.1');
$parser = new VersionParser($versions);
$this->assertSame(false, $parser->getMostRecentUnstable());
}
public function testShouldSelectMostRecentUnstableVersionFromStandardSelection()
{
$versions = array('1.0.0a', '1.0.0alpha', '1.0.0-dev', 'dev-1.0.0', '1.0.0b',
'1.0.0beta', '1.0.0rc', '1.0.0RC');
$parser = new VersionParser($versions);
$this->assertSame('1.0.0rc', $parser->getMostRecentUnstable());
}
public function testShouldSelectMostRecentUnstableVersionFromMixedSelection()
{
$versions = array('1.0.0', '1.0.1', '1.1.0', '1.2.0a', '1.2.0b', '1.1.0rc');
$parser = new VersionParser($versions);
$this->assertSame('1.2.0b', $parser->getMostRecentUnstable());
}
public function testShouldSelectMostRecentUnstableVersionFromPrefixedSelection()
{
$versions = array('v1.0.0b', 'v1.0.1', 'v1.1.0');
$parser = new VersionParser($versions);
$this->assertSame('v1.0.0b', $parser->getMostRecentUnstable());
}
public function testShouldSelectMostRecentUnstableVersionFromPartlyPrefixedSelection()
{
$versions = array('v1.0.0b', 'v1.0.0a', '1.1.0a');
$parser = new VersionParser($versions);
$this->assertSame('1.1.0a', $parser->getMostRecentUnstable());
}
public function testShouldSelectMostRecentUnstableFromVaryingNumeralCounts()
{
$versions = array('1.0-dev', '1.0.0-alpha1');
$parser = new VersionParser($versions);
$this->assertSame('1.0.0-alpha1', $parser->getMostRecentUnstable());
}
// All versions (ignoring stability)
public function testShouldSelectMostRecentIgnoringStabilityExceptDevFromPrefixedSelection()
{
$versions = array('v1.0.0b', 'v1.0.1', 'v1.1.0a', 'v1.2.0-dev');
$parser = new VersionParser($versions);
$this->assertSame('v1.1.0a', $parser->getMostRecentAll());
}
// Basic Version Category Checks
public function testIsStable()
{
$parser = new VersionParser;
$this->assertTrue($parser->isStable('1.0.0'));
$this->assertFalse($parser->isStable('1.0.0b'));
$this->assertFalse($parser->isStable('1.0.0-dev'));
$this->assertFalse($parser->isStable('1.0.0-alpha1-5-g5b46ad8'));
}
public function testIsPreRelease()
{
$parser = new VersionParser;
$this->assertFalse($parser->isPreRelease('1.0.0'));
$this->assertTrue($parser->isPreRelease('1.0.0b'));
$this->assertFalse($parser->isPreRelease('1.0.0-dev'));
$this->assertFalse($parser->isPreRelease('1.0.0-alpha1-5-g5b46ad8'));
}
public function testIsUnstable()
{
$parser = new VersionParser;
$this->assertFalse($parser->isUnstable('1.0.0'));
$this->assertTrue($parser->isUnstable('1.0.0b'));
$this->assertTrue($parser->isUnstable('1.0.0-dev'));
$this->assertTrue($parser->isUnstable('1.0.0-alpha1-5-g5b46ad8'));
}
public function testIsDevelopment()
{
$parser = new VersionParser;
$this->assertFalse($parser->isDevelopment('1.0.0'));
$this->assertFalse($parser->isDevelopment('1.0.0b'));
$this->assertTrue($parser->isDevelopment('1.0.0-dev'));
$this->assertTrue($parser->isDevelopment('1.0.0-alpha1-5-g5b46ad8'));
}
}