X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Ftests%2FDrupal%2FTests%2FComposerIntegrationTest.php;h=8ee025a809c801e76951b91b1217d252d8210db2;hb=74df008bdbb3a11eeea356744f39b802369bda3c;hp=b56849d86313823c10dc84a49484a6a0e26121c1;hpb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;p=yaffs-website diff --git a/web/core/tests/Drupal/Tests/ComposerIntegrationTest.php b/web/core/tests/Drupal/Tests/ComposerIntegrationTest.php index b56849d86..8ee025a80 100644 --- a/web/core/tests/Drupal/Tests/ComposerIntegrationTest.php +++ b/web/core/tests/Drupal/Tests/ComposerIntegrationTest.php @@ -2,6 +2,8 @@ namespace Drupal\Tests; +use Composer\Semver\Semver; + /** * Tests Composer integration. * @@ -9,6 +11,15 @@ namespace Drupal\Tests; */ class ComposerIntegrationTest extends UnitTestCase { + /** + * The minimum PHP version supported by Drupal. + * + * @see https://www.drupal.org/docs/8/system-requirements/web-server + * + * @todo Remove as part of https://www.drupal.org/node/2908079 + */ + const MIN_PHP_VERSION = '5.5.9'; + /** * Gets human-readable JSON error messages. * @@ -171,6 +182,34 @@ class ComposerIntegrationTest extends UnitTestCase { } } + /** + * Tests package requirements for the minimum supported PHP version by Drupal. + * + * @todo This can be removed when DrupalCI supports dependency regression + * testing in https://www.drupal.org/node/2874198 + */ + public function testMinPHPVersion() { + // Check for lockfile in the application root. If the lockfile does not + // exist, then skip this test. + $lockfile = $this->root . '/composer.lock'; + if (!file_exists($lockfile)) { + $this->markTestSkipped('/composer.lock is not available.'); + } + + $lock = json_decode(file_get_contents($lockfile), TRUE); + + // Check the PHP version for each installed non-development package. The + // testing infrastructure uses the uses the development packages, and may + // update them for particular environment configurations. In particular, + // PHP 7.2+ require an updated version of phpunit, which is incompatible + // with Drupal's minimum PHP requirement. + foreach ($lock['packages'] as $package) { + if (isset($package['require']['php'])) { + $this->assertTrue(Semver::satisfies(static::MIN_PHP_VERSION, $package['require']['php']), $package['name'] . ' has a PHP dependency requirement of "' . $package['require']['php'] . '"'); + } + } + } + // @codingStandardsIgnoreStart /** * The following method is copied from \Composer\Package\Locker.