Эх сурвалжийг харах

Add more tests and validate that there is only one comma

Jordi Boggiano 11 жил өмнө
parent
commit
4c713978e9

+ 1 - 1
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('{(?<!as|[=><])\s*[, ]+\s*(?!as)}', $constraints);
+            $andConstraints = preg_split('{(?<!^|as|[=>< ,]) *[, ] *(?!,|as|$)}', $constraints);
 
             if (count($andConstraints) > 1) {
                 $constraintObjects = array();

+ 7 - 0
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'),
         );
     }