function PackageManagerFixtureCreator::createFixture

Creates the fixture.

1 call to PackageManagerFixtureCreator::createFixture()
PackageManagerFixtureCreator.php in core/scripts/PackageManagerFixtureCreator.php

File

core/scripts/PackageManagerFixtureCreator.php, line 35

Class

PackageManagerFixtureCreator
Creates fixture at 'core/modules/package_manager/tests/fixtures/fake_site'.

Code

public static function createFixture() : void {
    // Copy drupal scaffold file mapping from core/composer.json to
    // fixtures' core/composer.json.
    $core_composer_json = new JsonFile(static::CORE_ROOT_PATH . '/core/composer.json');
    $core_composer_data = $core_composer_json->read();
    $fixture_core_composer_file = new JsonFile(static::FIXTURE_PATH . "/../path_repos/drupal--core/composer.json");
    $fixture_core_composer_data = $fixture_core_composer_file->read();
    $fixture_core_composer_data['extra']['drupal-scaffold']['file-mapping'] = $core_composer_data['extra']['drupal-scaffold']['file-mapping'];
    $fixture_core_composer_file->write($fixture_core_composer_data);
    $fixture_packages_json = new JsonFile(static::FIXTURE_PATH . '/packages.json');
    $fixture_packages_data = $fixture_packages_json->read();
    foreach ($fixture_packages_data['packages']['drupal/core'] as &$release) {
        $release['extra']['drupal-scaffold']['file-mapping'] = $core_composer_data['extra']['drupal-scaffold']['file-mapping'];
    }
    $fixture_packages_json->write($fixture_packages_data);
    $fs = new Filesystem();
    $fs->remove(static::FIXTURE_PATH . "/composer.lock");
    // Remove all the vendor folders but leave our 2 test files.
    // @see \Drupal\Tests\package_manager\Kernel\PathExcluder\VendorHardeningExcluderTest
    self::removeAllExcept(static::FIXTURE_PATH . "/vendor", [
        '.htaccess',
        'web.config',
    ]);
    self::runComposerCommand([
        'install',
    ]);
    static::removeAllExcept(static::FIXTURE_PATH . '/vendor/composer', [
        'installed.json',
        'installed.php',
    ]);
    $fs->remove(static::FIXTURE_PATH . '/vendor/autoload.php');
    print "\nFixture updated.\nRunning phpcbf";
    $process = new Process([
        'composer',
        'phpcbf',
        static::FIXTURE_PATH,
    ], static::CORE_ROOT_PATH);
    $process->run();
    print "\nFixture created 🎉.";
}

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