Issue #2877119 by alexpott, Dane Powell: Cannot uninstall Config module via drush config-import
parent
1b87d95eaf
commit
6ab577bf28
|
@ -18,6 +18,11 @@ class ConfigSubscriber extends ConfigImportValidateEventSubscriberBase {
|
||||||
* The config import event.
|
* The config import event.
|
||||||
*/
|
*/
|
||||||
public function onConfigImporterValidate(ConfigImporterEvent $event) {
|
public function onConfigImporterValidate(ConfigImporterEvent $event) {
|
||||||
|
// Make sure config syncs performed via the Config UI don't break, but
|
||||||
|
// don't worry about syncs initiated via the command line.
|
||||||
|
if (PHP_SAPI === 'cli') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
$importer = $event->getConfigImporter();
|
$importer = $event->getConfigImporter();
|
||||||
$core_extension = $importer->getStorageComparer()->getSourceStorage()->read('core.extension');
|
$core_extension = $importer->getStorageComparer()->getSourceStorage()->read('core.extension');
|
||||||
if (!isset($core_extension['module']['config'])) {
|
if (!isset($core_extension['module']['config'])) {
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Drupal\Tests\config\Kernel;
|
||||||
|
|
||||||
|
use Drupal\Core\Config\ConfigImporter;
|
||||||
|
use Drupal\Core\Config\StorageComparer;
|
||||||
|
use Drupal\KernelTests\KernelTestBase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests importing configuration from files into active configuration.
|
||||||
|
*
|
||||||
|
* @group config
|
||||||
|
*/
|
||||||
|
class ConfigUninstallViaCliImportTest extends KernelTestBase {
|
||||||
|
/**
|
||||||
|
* Config Importer object used for testing.
|
||||||
|
*
|
||||||
|
* @var \Drupal\Core\Config\ConfigImporter
|
||||||
|
*/
|
||||||
|
protected $configImporter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Modules to enable.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public static $modules = ['system', 'config'];
|
||||||
|
|
||||||
|
protected function setUp() {
|
||||||
|
parent::setUp();
|
||||||
|
if (PHP_SAPI !== 'cli') {
|
||||||
|
$this->markTestSkipped('This test has to be run from the CLI');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->copyConfig($this->container->get('config.storage'), $this->container->get('config.storage.sync'));
|
||||||
|
|
||||||
|
// Set up the ConfigImporter object for testing.
|
||||||
|
$storage_comparer = new StorageComparer(
|
||||||
|
$this->container->get('config.storage.sync'),
|
||||||
|
$this->container->get('config.storage'),
|
||||||
|
$this->container->get('config.manager')
|
||||||
|
);
|
||||||
|
$this->configImporter = new ConfigImporter(
|
||||||
|
$storage_comparer->createChangelist(),
|
||||||
|
$this->container->get('event_dispatcher'),
|
||||||
|
$this->container->get('config.manager'),
|
||||||
|
$this->container->get('lock'),
|
||||||
|
$this->container->get('config.typed'),
|
||||||
|
$this->container->get('module_handler'),
|
||||||
|
$this->container->get('module_installer'),
|
||||||
|
$this->container->get('theme_handler'),
|
||||||
|
$this->container->get('string_translation')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests that the config mopdule can be uninstalled via CLI config import.
|
||||||
|
*
|
||||||
|
* @see \Drupal\config\ConfigSubscriber
|
||||||
|
*/
|
||||||
|
public function testConfigUninstallViaCli() {
|
||||||
|
$this->assertTrue($this->container->get('module_handler')->moduleExists('config'));
|
||||||
|
$sync = $this->container->get('config.storage.sync');
|
||||||
|
$extensions = $sync->read('core.extension');
|
||||||
|
unset($extensions['module']['config']);
|
||||||
|
$sync->write('core.extension', $extensions);
|
||||||
|
$this->configImporter->reset()->import();
|
||||||
|
$this->assertFalse($this->container->get('module_handler')->moduleExists('config'));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue