From a3b49ae44f1c8f584c06a9e6579b9b32bb612ade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 15 May 2016 22:15:48 +0200 Subject: [PATCH 1/2] Enhancement: Assert that no warning is issued when using exact version constraint for unstable package --- .../Package/Loader/ValidatingArrayLoaderTest.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/Composer/Test/Package/Loader/ValidatingArrayLoaderTest.php b/tests/Composer/Test/Package/Loader/ValidatingArrayLoaderTest.php index 4654fc4fc..5af956fe4 100644 --- a/tests/Composer/Test/Package/Loader/ValidatingArrayLoaderTest.php +++ b/tests/Composer/Test/Package/Loader/ValidatingArrayLoaderTest.php @@ -326,6 +326,18 @@ class ValidatingArrayLoaderTest extends \PHPUnit_Framework_TestCase ), false, ), + array( + array( + 'name' => 'foo/bar', + 'require' => array( + 'bar/unstable' => '0.3.0', + ), + ), + array( + // using an exact version constraint for an unstable version should not trigger a warning + ), + false, + ), array( array( 'name' => 'foo/bar', From bb0fb0eb267cacf27496b2d6dc2040a678888232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 15 May 2016 22:24:39 +0200 Subject: [PATCH 2/2] Fix: Do not issue warning when using exact version constraint for unstable package --- src/Composer/Package/Loader/ValidatingArrayLoader.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Composer/Package/Loader/ValidatingArrayLoader.php b/src/Composer/Package/Loader/ValidatingArrayLoader.php index 13e0f7590..e60801d91 100644 --- a/src/Composer/Package/Loader/ValidatingArrayLoader.php +++ b/src/Composer/Package/Loader/ValidatingArrayLoader.php @@ -151,6 +151,7 @@ class ValidatingArrayLoader implements LoaderInterface } $unboundConstraint = new Constraint('=', $this->versionParser->normalize('dev-master')); + $stableConstraint = new Constraint('=', '1.0.0'); foreach (array_keys(BasePackage::$supportedLinkTypes) as $linkType) { if ($this->validateArray($linkType) && isset($this->config[$linkType])) { @@ -183,6 +184,7 @@ class ValidatingArrayLoader implements LoaderInterface ($this->flags & self::CHECK_STRICT_CONSTRAINTS) && 'require' === $linkType && substr($linkConstraint, 0, 1) === '=' + && $stableConstraint->versionCompare($stableConstraint, $linkConstraint, '<=') ) { $this->warnings[] = $linkType.'.'.$package.' : exact version constraints ('.$constraint.') should be avoided if the package follows semantic versioning'; }