Detect ~> misuse and suggest fix, fixes #2476
parent
45c8d5c817
commit
80499bb024
|
@ -275,7 +275,14 @@ class VersionParser
|
||||||
// version, to ensure that unstable instances of the current version are allowed.
|
// version, to ensure that unstable instances of the current version are allowed.
|
||||||
// however, if a stability suffix is added to the constraint, then a >= match on the current version is
|
// however, if a stability suffix is added to the constraint, then a >= match on the current version is
|
||||||
// used instead
|
// used instead
|
||||||
if (preg_match('{^~(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.(\d+))?'.self::$modifierRegex.'?$}i', $constraint, $matches)) {
|
if (preg_match('{^~>?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.(\d+))?'.self::$modifierRegex.'?$}i', $constraint, $matches)) {
|
||||||
|
if (substr($constraint, 0, 2) === '~>') {
|
||||||
|
throw new \UnexpectedValueException(
|
||||||
|
'Could not parse version constraint '.$constraint.': '.
|
||||||
|
'Invalid operator "~>", you probably meant to use the "~" operator'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Work out which position in the version we are operating at
|
// Work out which position in the version we are operating at
|
||||||
if (isset($matches[4]) && '' !== $matches[4]) {
|
if (isset($matches[4]) && '' !== $matches[4]) {
|
||||||
$position = 4;
|
$position = 4;
|
||||||
|
|
|
@ -181,6 +181,16 @@ class VersionParserTest extends \PHPUnit_Framework_TestCase
|
||||||
$this->assertSame((string) new VersionConstraint('=', '1.0.0.0'), (string) $parser->parseConstraints('1.0#trunk/@123'));
|
$this->assertSame((string) new VersionConstraint('=', '1.0.0.0'), (string) $parser->parseConstraints('1.0#trunk/@123'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException UnexpectedValueException
|
||||||
|
* @expectedExceptionMessage Invalid operator "~>", you probably meant to use the "~" operator
|
||||||
|
*/
|
||||||
|
public function testParseConstraintsNudgesRubyDevsTowardsThePathOfRighteousness()
|
||||||
|
{
|
||||||
|
$parser = new VersionParser;
|
||||||
|
$parser->parseConstraints('~>1.2');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider simpleConstraints
|
* @dataProvider simpleConstraints
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue