Merge remote-tracking branch 'simensen/sem-version-support'
commit
a59a5c4581
|
@ -248,6 +248,28 @@ class VersionParser
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (preg_match('{^~(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.(\d+))?$}', $constraint, $matches)) {
|
||||||
|
if (isset($matches[4])) {
|
||||||
|
$highVersion = $matches[1] . '.' . $matches[2] . '.' . ($matches[3] + 1) . '.0-dev';
|
||||||
|
$lowVersion = $matches[1] . '.' . $matches[2] . '.' . $matches[3]. '.' . $matches[4];
|
||||||
|
} elseif (isset($matches[3])) {
|
||||||
|
$highVersion = $matches[1] . '.' . ($matches[2] + 1) . '.0.0-dev';
|
||||||
|
$lowVersion = $matches[1] . '.' . $matches[2] . '.' . $matches[3]. '.0';
|
||||||
|
} else {
|
||||||
|
$highVersion = ($matches[1] + 1) . '.0.0.0-dev';
|
||||||
|
if (isset($matches[2])) {
|
||||||
|
$lowVersion = $matches[1] . '.' . $matches[2] . '.0.0';
|
||||||
|
} else {
|
||||||
|
$lowVersion = $matches[1] . '.0.0.0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return array(
|
||||||
|
new VersionConstraint('>=', $lowVersion),
|
||||||
|
new VersionConstraint('<', $highVersion),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// match wildcard constraints
|
// match wildcard constraints
|
||||||
if (preg_match('{^(\d+)(?:\.(\d+))?(?:\.(\d+))?\.[x*]$}', $constraint, $matches)) {
|
if (preg_match('{^(\d+)(?:\.(\d+))?(?:\.(\d+))?\.[x*]$}', $constraint, $matches)) {
|
||||||
if (isset($matches[3])) {
|
if (isset($matches[3])) {
|
||||||
|
|
|
@ -241,6 +241,31 @@ class VersionParserTest extends \PHPUnit_Framework_TestCase
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider tildeConstraints
|
||||||
|
*/
|
||||||
|
public function testParseTildeWildcard($input, $min, $max)
|
||||||
|
{
|
||||||
|
$parser = new VersionParser;
|
||||||
|
if ($min) {
|
||||||
|
$expected = new MultiConstraint(array($min, $max));
|
||||||
|
} else {
|
||||||
|
$expected = $max;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->assertSame((string) $expected, (string) $parser->parseConstraints($input));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function tildeConstraints()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array('~1', new VersionConstraint('>=', '1.0.0.0'), new VersionConstraint('<', '2.0.0.0-dev')),
|
||||||
|
array('~1.2', new VersionConstraint('>=', '1.2.0.0'), new VersionConstraint('<', '2.0.0.0-dev')),
|
||||||
|
array('~1.2.3', new VersionConstraint('>=', '1.2.3.0'), new VersionConstraint('<', '1.3.0.0-dev')),
|
||||||
|
array('~1.2.3.4', new VersionConstraint('>=', '1.2.3.4'), new VersionConstraint('<', '1.2.4.0-dev')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function testParseConstraintsMulti()
|
public function testParseConstraintsMulti()
|
||||||
{
|
{
|
||||||
$parser = new VersionParser;
|
$parser = new VersionParser;
|
||||||
|
|
Loading…
Reference in New Issue