Issue #2769841 by edgewl2, alexpott, heddn: Prefer caret over tilde in composer.json

8.4.x
Nathaniel Catchpole 2017-06-12 12:11:06 +01:00
parent 3a6bbc8cae
commit 7c48639922
18 changed files with 90 additions and 50 deletions

View File

@ -5,10 +5,10 @@
"license": "GPL-2.0+",
"require": {
"composer/installers": "^1.0.24",
"wikimedia/composer-merge-plugin": "~1.4"
"wikimedia/composer-merge-plugin": "^1.4"
},
"replace": {
"drupal/core": "~8.4"
"drupal/core": "^8.4"
},
"minimum-stability": "dev",
"prefer-stable": true,

2
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "5264cac45d935c61a1d48a32b71c9f15",
"content-hash": "bec46eaaa9fa07a4cbd8c84302f0d275",
"packages": [
{
"name": "asm89/stack-cors",

View File

@ -5,47 +5,47 @@
"license": "GPL-2.0+",
"require": {
"php": ">=5.5.9",
"symfony/class-loader": "~3.2",
"symfony/console": "~3.2",
"symfony/dependency-injection": "~3.2",
"symfony/event-dispatcher": "~3.2",
"symfony/http-foundation": "~3.2",
"symfony/http-kernel": "~3.2",
"symfony/routing": "~3.2",
"symfony/serializer": "~3.2",
"symfony/translation": "~3.2",
"symfony/validator": "~3.2",
"symfony/process": "~3.2",
"symfony/polyfill-iconv": "~1.0",
"symfony/yaml": "~3.2",
"symfony/class-loader": "^3.2",
"symfony/console": "^3.2",
"symfony/dependency-injection": "^3.2",
"symfony/event-dispatcher": "^3.2",
"symfony/http-foundation": "^3.2",
"symfony/http-kernel": "^3.2",
"symfony/routing": "^3.2",
"symfony/serializer": "^3.2",
"symfony/translation": "^3.2",
"symfony/validator": "^3.2",
"symfony/process": "^3.2",
"symfony/polyfill-iconv": "^1.0",
"symfony/yaml": "^3.2",
"twig/twig": "^1.23.1",
"doctrine/common": "^2.5",
"doctrine/annotations": "1.2.*",
"doctrine/annotations": "^1.2",
"guzzlehttp/guzzle": "^6.2.1",
"symfony-cmf/routing": "~1.4",
"easyrdf/easyrdf": "0.9.*",
"zendframework/zend-feed": "~2.4",
"stack/builder": "1.0.*",
"egulias/email-validator": "1.2.*",
"masterminds/html5": "~2.1",
"symfony-cmf/routing": "^1.4",
"easyrdf/easyrdf": "^0.9",
"zendframework/zend-feed": "^2.4",
"stack/builder": "^1.0",
"egulias/email-validator": "^1.2",
"masterminds/html5": "^2.1",
"symfony/psr-http-message-bridge": "^1.0",
"zendframework/zend-diactoros": "~1.1",
"composer/semver": "~1.0",
"zendframework/zend-diactoros": "^1.1",
"composer/semver": "^1.0",
"paragonie/random_compat": "^1.0|^2.0",
"asm89/stack-cors": "~1.1"
"asm89/stack-cors": "^1.1"
},
"conflict": {
"drush/drush": "<8.1.10"
},
"require-dev": {
"behat/mink": "1.7.x-dev",
"behat/mink-goutte-driver": "~1.2",
"drupal/coder": "8.2.12",
"jcalderonzumba/gastonjs": "~1.0.2",
"jcalderonzumba/mink-phantomjs-driver": "~0.3.1",
"mikey179/vfsStream": "~1.2",
"behat/mink-goutte-driver": "^1.2",
"drupal/coder": "^8.2.12",
"jcalderonzumba/gastonjs": "^1.0.2",
"jcalderonzumba/mink-phantomjs-driver": "^0.3.1",
"mikey179/vfsStream": "^1.2",
"phpunit/phpunit": ">=4.8.35 <5",
"symfony/css-selector": "~3.2",
"symfony/css-selector": "^3.2",
"symfony/phpunit-bridge": "^3.2"
},
"replace": {

View File

@ -8,9 +8,9 @@
"php": ">=5.5.9",
"doctrine/common": "2.5.*",
"doctrine/annotations": "1.2.*",
"drupal/core-fileCache": "~8.2",
"drupal/core-plugin": "~8.2",
"drupal/core-utility": "~8.2"
"drupal/core-fileCache": "^8.2",
"drupal/core-plugin": "^8.2",
"drupal/core-utility": "^8.2"
},
"autoload": {
"psr-4": {

View File

@ -6,7 +6,7 @@
"license": "GPL-2.0+",
"require": {
"php": ">=5.5.9",
"zendframework/zend-feed": "~2.4"
"zendframework/zend-feed": "^2.4"
},
"autoload": {
"psr-4": {

View File

@ -6,7 +6,7 @@
"license": "GPL-2.0+",
"require": {
"php": ">=5.5.9",
"drupal/core-utility": "~8.2"
"drupal/core-utility": "^8.2"
},
"autoload": {
"psr-4": {

View File

@ -12,7 +12,7 @@
},
"require": {
"php": ">=5.5.9",
"symfony/dependency-injection": "~2.8"
"symfony/dependency-injection": "^2.8"
},
"suggest": {
"symfony/expression-language": "For using expressions in service container configuration"

View File

@ -6,7 +6,7 @@
"license": "GPL-2.0+",
"require": {
"php": ">=5.5.9",
"drupal/utility": "~8.2"
"drupal/utility": "^8.2"
},
"autoload": {
"psr-4": {

View File

@ -6,8 +6,8 @@
"license": "GPL-2.0+",
"require": {
"php": ">=5.5.9",
"drupal/core-filecache": "~8.2",
"drupal/core-serialization": "~8.2"
"drupal/core-filecache": "^8.2",
"drupal/core-serialization": "^8.2"
},
"autoload": {
"psr-4": {

View File

@ -6,8 +6,8 @@
"license": "GPL-2.0+",
"require": {
"php": ">=5.5.9",
"symfony/dependency-injection": "~2.8",
"symfony/event-dispatcher": "~2.7"
"symfony/dependency-injection": "^2.8",
"symfony/event-dispatcher": "^2.7"
},
"autoload": {
"psr-4": {

View File

@ -10,7 +10,7 @@
},
"require": {
"php": ">=5.5.9",
"drupal/core-utility": "~8.2"
"drupal/core-utility": "^8.2"
},
"autoload": {
"psr-4": {

View File

@ -6,7 +6,7 @@
"license": "GPL-2.0+",
"require": {
"php": ">=5.5.9",
"symfony/http-foundation": "~2.7"
"symfony/http-foundation": "^2.7"
},
"autoload": {
"psr-4": {

View File

@ -6,7 +6,7 @@
"license": "GPL-2.0+",
"require": {
"php": ">=5.5.9",
"symfony/validator": "~2.7"
"symfony/validator": "^2.7"
},
"autoload": {
"psr-4": {

View File

@ -6,7 +6,7 @@
"license": "GPL-2.0+",
"require": {
"php": ">=5.5.9",
"drupal/core-utility": "~8.2"
"drupal/core-utility": "^8.2"
},
"autoload": {
"psr-4": {

View File

@ -6,7 +6,7 @@
"license": "GPL-2.0+",
"require": {
"php": ">=5.5.9",
"symfony/yaml": "~2.7"
"symfony/yaml": "^2.7"
},
"autoload": {
"psr-4": {

View File

@ -7,7 +7,7 @@
"require": {
"php": ">=5.5.9",
"paragonie/random_compat": "^1.0|^2.0",
"drupal/core-render": "~8.2"
"drupal/core-render": "^8.2"
},
"autoload": {
"psr-4": {

View File

@ -10,7 +10,7 @@
},
"require": {
"php": ">=5.5.9",
"drupal/core-utility": "~8.2"
"drupal/core-utility": "^8.2"
},
"autoload": {
"psr-4": {

View File

@ -88,6 +88,46 @@ class ComposerIntegrationTest extends UnitTestCase {
$this->assertSame($content_hash, $lock['content-hash']);
}
/**
* Tests composer.json versions.
*
* @param string $path
* Path to a composer.json to test.
*
* @dataProvider providerTestComposerJson
*/
public function testComposerTilde($path) {
$content = json_decode(file_get_contents($path), TRUE);
$composer_keys = array_intersect(['require', 'require-dev'], array_keys($content));
if (empty($composer_keys)) {
$this->markTestSkipped("$path has no keys to test");
}
foreach ($composer_keys as $composer_key) {
foreach ($content[$composer_key] as $dependency => $version) {
$this->assertFalse(strpos($version, '~'), "Dependency $dependency in $path contains a tilde, use a caret.");
}
}
}
/**
* Data provider for all the composer.json provided by Drupal core.
*
* @return array
*/
public function providerTestComposerJson() {
$root = realpath(__DIR__ . '/../../../../');
$tests = [[$root . '/composer.json']];
$directory = new \RecursiveDirectoryIterator($root . '/core');
$iterator = new \RecursiveIteratorIterator($directory);
/** @var \SplFileInfo $file */
foreach ($iterator as $file) {
if ($file->getFilename() === 'composer.json' && strpos($file->getPath(), 'core/modules/system/tests/fixtures/HtaccessTest') === FALSE) {
$tests[] = [$file->getRealPath()];
}
}
return $tests;
}
/**
* Tests core's composer.json replace section.
*