147 lines
4.9 KiB
PHP
147 lines
4.9 KiB
PHP
<?php
|
|
/*
|
|
* This file is part of PharIo\Version.
|
|
*
|
|
* (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, 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 PharIo\Version;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
/**
|
|
* @covers \PharIo\Version\VersionConstraintParser
|
|
*/
|
|
class VersionConstraintParserTest extends TestCase {
|
|
/**
|
|
* @dataProvider versionStringProvider
|
|
*
|
|
* @param string $versionString
|
|
* @param VersionConstraint $expectedConstraint
|
|
*/
|
|
public function testReturnsExpectedConstraint($versionString, VersionConstraint $expectedConstraint) {
|
|
$parser = new VersionConstraintParser;
|
|
|
|
$this->assertEquals($expectedConstraint, $parser->parse($versionString));
|
|
}
|
|
|
|
/**
|
|
* @dataProvider unsupportedVersionStringProvider
|
|
*
|
|
* @param string $versionString
|
|
*/
|
|
public function testThrowsExceptionIfVersionStringIsNotSupported($versionString) {
|
|
$parser = new VersionConstraintParser;
|
|
|
|
$this->expectException(UnsupportedVersionConstraintException::class);
|
|
|
|
$parser->parse($versionString);
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function versionStringProvider() {
|
|
return [
|
|
['1.0.2', new ExactVersionConstraint('1.0.2')],
|
|
[
|
|
'~4.6',
|
|
new AndVersionConstraintGroup(
|
|
'~4.6',
|
|
[
|
|
new GreaterThanOrEqualToVersionConstraint('~4.6', new Version('4.6')),
|
|
new SpecificMajorVersionConstraint('~4.6', 4)
|
|
]
|
|
)
|
|
],
|
|
[
|
|
'~4.6.2',
|
|
new AndVersionConstraintGroup(
|
|
'~4.6.2',
|
|
[
|
|
new GreaterThanOrEqualToVersionConstraint('~4.6.2', new Version('4.6.2')),
|
|
new SpecificMajorAndMinorVersionConstraint('~4.6.2', 4, 6)
|
|
]
|
|
)
|
|
],
|
|
[
|
|
'^2.6.1',
|
|
new AndVersionConstraintGroup(
|
|
'^2.6.1',
|
|
[
|
|
new GreaterThanOrEqualToVersionConstraint('^2.6.1', new Version('2.6.1')),
|
|
new SpecificMajorVersionConstraint('^2.6.1', 2)
|
|
]
|
|
)
|
|
],
|
|
['5.1.*', new SpecificMajorAndMinorVersionConstraint('5.1.*', 5, 1)],
|
|
['5.*', new SpecificMajorVersionConstraint('5.*', 5)],
|
|
['*', new AnyVersionConstraint()],
|
|
[
|
|
'1.0.2 || 1.0.5',
|
|
new OrVersionConstraintGroup(
|
|
'1.0.2 || 1.0.5',
|
|
[
|
|
new ExactVersionConstraint('1.0.2'),
|
|
new ExactVersionConstraint('1.0.5')
|
|
]
|
|
)
|
|
],
|
|
[
|
|
'^5.6 || ^7.0',
|
|
new OrVersionConstraintGroup(
|
|
'^5.6 || ^7.0',
|
|
[
|
|
new AndVersionConstraintGroup(
|
|
'^5.6', [
|
|
new GreaterThanOrEqualToVersionConstraint('^5.6', new Version('5.6')),
|
|
new SpecificMajorVersionConstraint('^5.6', 5)
|
|
]
|
|
),
|
|
new AndVersionConstraintGroup(
|
|
'^7.0', [
|
|
new GreaterThanOrEqualToVersionConstraint('^7.0', new Version('7.0')),
|
|
new SpecificMajorVersionConstraint('^7.0', 7)
|
|
]
|
|
)
|
|
]
|
|
)
|
|
],
|
|
['7.0.28-1', new ExactVersionConstraint('7.0.28-1')],
|
|
[
|
|
'^3.0.0-alpha1',
|
|
new AndVersionConstraintGroup(
|
|
'^3.0.0-alpha1',
|
|
[
|
|
new GreaterThanOrEqualToVersionConstraint('^3.0.0-alpha1', new Version('3.0.0-alpha1')),
|
|
new SpecificMajorVersionConstraint('^3.0.0-alpha1', 3)
|
|
]
|
|
)
|
|
],
|
|
[
|
|
'^3.0.0-alpha.1',
|
|
new AndVersionConstraintGroup(
|
|
'^3.0.0-alpha.1',
|
|
[
|
|
new GreaterThanOrEqualToVersionConstraint('^3.0.0-alpha.1', new Version('3.0.0-alpha.1')),
|
|
new SpecificMajorVersionConstraint('^3.0.0-alpha.1', 3)
|
|
]
|
|
)
|
|
]
|
|
];
|
|
}
|
|
|
|
public function unsupportedVersionStringProvider() {
|
|
return [
|
|
['foo'],
|
|
['+1.0.2'],
|
|
['>=2.0'],
|
|
['^5.6 || >= 7.0'],
|
|
['2.0 || foo']
|
|
];
|
|
}
|
|
}
|