diff --git a/src/Composer/Package/Version/VersionParser.php b/src/Composer/Package/Version/VersionParser.php index a2ad3bd11..eb1529648 100644 --- a/src/Composer/Package/Version/VersionParser.php +++ b/src/Composer/Package/Version/VersionParser.php @@ -233,7 +233,7 @@ class VersionParser $orConstraints = preg_split('{\s*\|\s*}', trim($constraints)); $orGroups = array(); foreach ($orConstraints as $constraints) { - $andConstraints = preg_split('{(?<])\s*[, ]+\s*(?!as)}', $constraints); + $andConstraints = preg_split('{(?< ,]) *[, ] *(?!,|as|$)}', $constraints); if (count($andConstraints) > 1) { $constraintObjects = array(); diff --git a/tests/Composer/Test/Package/Version/VersionParserTest.php b/tests/Composer/Test/Package/Version/VersionParserTest.php index 5a15dd714..a312b2e98 100644 --- a/tests/Composer/Test/Package/Version/VersionParserTest.php +++ b/tests/Composer/Test/Package/Version/VersionParserTest.php @@ -313,6 +313,10 @@ class VersionParserTest extends \PHPUnit_Framework_TestCase array('>2.0, <=3.0'), array('>2.0 ,<=3.0'), array('>2.0 , <=3.0'), + array('>2.0 , <=3.0'), + array('> 2.0 <= 3.0'), + array('> 2.0 , <= 3.0'), + array(' > 2.0 , <= 3.0 '), ); } @@ -365,6 +369,9 @@ class VersionParserTest extends \PHPUnit_Framework_TestCase return array( 'empty ' => array(''), 'invalid version' => array('1.0.0-meh'), + 'operator abuse' => array('>2.0,,<=3.0'), + 'operator abuse/2' => array('>2.0 ,, <=3.0'), + 'operator abuse/3' => array('>2.0 || <=3.0'), ); }