Error out on recursive links in validating loader and ignore them in regular loader
parent
bd4d624cc7
commit
b09a39f9c8
|
@ -327,6 +327,12 @@ class ArrayLoader implements LoaderInterface
|
|||
$links = array();
|
||||
foreach ($config[$type] as $prettyTarget => $constraint) {
|
||||
$target = strtolower($prettyTarget);
|
||||
|
||||
// recursive links are not supported
|
||||
if ($target === $name) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($constraint === 'self.version') {
|
||||
$links[$target] = $this->createLink($name, $prettyVersion, $opts['method'], $target, $constraint);
|
||||
} else {
|
||||
|
|
|
@ -241,6 +241,11 @@ class ValidatingArrayLoader implements LoaderInterface
|
|||
foreach (array_keys(BasePackage::$supportedLinkTypes) as $linkType) {
|
||||
if ($this->validateArray($linkType) && isset($this->config[$linkType])) {
|
||||
foreach ($this->config[$linkType] as $package => $constraint) {
|
||||
if (0 === strcasecmp($package, $this->config['name'])) {
|
||||
$this->errors[] = $linkType.'.'.$package.' : a package cannot set a '.$linkType.' on itself';
|
||||
unset($this->config[$linkType][$package]);
|
||||
continue;
|
||||
}
|
||||
if ($err = self::hasPackageNamingError($package, true)) {
|
||||
$this->warnings[] = 'Deprecation warning: '.$linkType.'.'.$err.' Make sure you fix this as Composer 2.0 will error.';
|
||||
} elseif (!preg_match('{^[A-Za-z0-9_./-]+$}', $package)) {
|
||||
|
|
|
@ -17,7 +17,7 @@ Circular dependencies are possible between packages
|
|||
"version": "1.0.0",
|
||||
"source": { "reference": "some.branch", "type": "git", "url": "" },
|
||||
"require": {
|
||||
"require/itself": "1.0.0"
|
||||
"root/pkg": "dev-master"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -354,6 +354,15 @@ class ValidatingArrayLoaderTest extends TestCase
|
|||
'source.url : must not start with a "-", "--foo" given',
|
||||
),
|
||||
),
|
||||
array(
|
||||
array(
|
||||
'name' => 'foo/bar',
|
||||
'require' => array('foo/Bar' => '1.*'),
|
||||
),
|
||||
array(
|
||||
'require.foo/Bar : a package cannot set a require on itself',
|
||||
),
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue