Skip to content
Snippets Groups Projects
Commit 721822a4 authored by Ted Bowman's avatar Ted Bowman Committed by Wim Leers
Browse files

Issue #3341974 by tedbow, Wim Leers: Finalize...

Issue #3341974 by tedbow, Wim Leers: Finalize \Drupal\automatic_updates\Development\Converter script to update core MR
parent 919519b3
No related branches found
No related tags found
No related merge requests found
......@@ -23,15 +23,13 @@
"Composer\\Config::disableProcessTimeout",
"scripts/phpunit.sh"
],
"core-convert": "Drupal\\automatic_updates\\Development\\Converter::doConvert",
"create-site-fixture": "\\Drupal\\automatic_updates\\Development\\ComposerFixtureCreator::createFixture"
"core-convert": "Drupal\\automatic_updates\\Development\\Converter::doConvert"
},
"scripts-descriptions": {
"phpcbf": "Automatically fixes standards violations where possible.",
"phpcs": "Checks code for standards compliance.",
"test": "Runs PHPUnit tests.",
"core-convert": "Converts this module to a core merge request. Excepts 2 arguments. 1) The core clone directory. 2) The core merge request branch.",
"create-site-fixture": "Recreates the 'fake_site' fixture needed for testing. Requires 1 argument, the core clone directory."
"core-convert": "Converts this module to a core merge request. Excepts 2 arguments. 1) The core clone directory. 2) The core merge request branch."
},
"require-dev": {
"colinodell/psr-testlogger": "^1"
......
#!/usr/bin/env php
<?php
declare(strict_types = 1);
/**
* @file
* A script that updates the package_manager test 'fake_site' fixture.
*/
namespace Drupal\automatic_updates\Development;
declare(strict_types = 1);
use Composer\Json\JsonFile;
use Composer\Script\Event;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Process\Exception\ProcessFailedException;
use Symfony\Component\Process\Process;
if (PHP_SAPI !== 'cli') {
return;
}
// Bootstrap.
require __DIR__ . '/../../../autoload.php';
PackageManagerFixtureCreator::createFixture();
/**
* Creates the test fixture at 'package_manager/tests/fixtures/fake_site'.
* Creates fixture at 'core/modules/package_manager/tests/fixtures/fake_site'.
*/
final class ComposerFixtureCreator {
final class PackageManagerFixtureCreator {
private const FIXTURE_PATH = __DIR__ . '/../package_manager/tests/fixtures/fake_site';
const FIXTURE_PATH = __DIR__ . '/../../package_manager/tests/fixtures/fake_site';
private const CORE_ROOT_PATH = __DIR__ . '/../../../';
/**
* Creates the fixture.
*
* @param \Composer\Script\Event $event
* The Composer event.
*/
public static function createFixture(Event $event): void {
$args = $event->getArguments();
if (count($args) !== 1) {
throw new \Exception("This script requires 1 argument: a directory that is a core clone.");
}
$core_dir = $args[0];
if (!is_dir($core_dir)) {
throw new \Exception("$core_dir is not a directory.");
}
public static function createFixture(): void {
// Copy drupal scaffold file mapping from core/composer.json to
// fixtures' core/composer.json.
$core_composer_json = new JsonFile("$core_dir/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();
......@@ -49,8 +50,9 @@ final class ComposerFixtureCreator {
static::doComposerInstall();
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'], __DIR__ . '/../..');
$process = new Process(['composer', 'phpcbf', static::FIXTURE_PATH], static::CORE_ROOT_PATH);
$process->run();
print "\nFixture created 🎉.";
}
......@@ -102,8 +104,6 @@ final class ComposerFixtureCreator {
* Runs `composer install`.
*/
protected static function doComposerInstall(): void {
// Disable Packagist entirely so that we don't test the Internet.
static::runComposerCommand(['config', 'repo.packagist.org', 'false']);
static::runComposerCommand(['install']);
}
......
......@@ -68,6 +68,18 @@ class Converter {
$fs->mirror(self::getContribDir(), $core_module_path);
self::info('Mirrored into core module');
$new_script_path = "$core_dir/core/scripts/PackageManagerFixtureCreator.php";
$fs->rename($core_module_path . '/scripts/PackageManagerFixtureCreator.php', $new_script_path);
$script_replacements = [
"__DIR__ . '/../../../autoload.php'" => "__DIR__ . '/../../autoload.php'",
"__DIR__ . '/../package_manager/tests/fixtures/fake_site'" => "__DIR__ . '/../modules/package_manager/tests/fixtures/fake_site'",
"CORE_ROOT_PATH = __DIR__ . '/../../../'" => "CORE_ROOT_PATH = __DIR__ . '/../..'",
"new Process(['composer', 'phpcbf'], self::FIXTURE_PATH);" => "new Process(['composer', 'phpcbf', self::FIXTURE_PATH], self::CORE_ROOT_PATH);",
];
foreach ($script_replacements as $search => $replace) {
static::replaceContents([new \SplFileInfo($new_script_path)], $search, $replace);
}
// Remove unneeded.
$removals = [
'automatic_updates_extensions',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment