function ComposerIntegrationTest::testAllModulesReplaced

Tests core's composer.json replace section.

Verify that all core modules are also listed in the 'replace' section of core's composer.json.

File

core/tests/Drupal/Tests/ComposerIntegrationTest.php, line 84

Class

ComposerIntegrationTest
Tests Composer integration.

Namespace

Drupal\Tests

Code

public function testAllModulesReplaced() {
    // Assemble a path to core modules.
    $module_path = $this->root . '/core/modules';
    // Grab the 'replace' section of the core composer.json file.
    $json = json_decode(file_get_contents($this->root . '/core/composer.json'));
    $composer_replace_packages = (array) $json->replace;
    // Get a list of all the files in the module path.
    $folders = scandir($module_path);
    // Make sure we only deal with directories that aren't . or ..
    $module_names = [];
    $discard = [
        '.',
        '..',
    ];
    foreach ($folders as $file_name) {
        if (!in_array($file_name, $discard) && is_dir($module_path . '/' . $file_name)) {
            $module_names[] = $file_name;
        }
    }
    // Assert that each core module has a corresponding 'replace' in
    // composer.json.
    foreach ($module_names as $module_name) {
        $this->assertArrayHasKey('drupal/' . $module_name, $composer_replace_packages, 'Unable to find ' . $module_name . ' in replace list of composer.json');
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.