Sets up Drupal unit test environment.
Overrides UnitTestBase::setUp
DrupalUnitTestBase::$modules
protected function setUp() {
// Copy/prime extension file lists once to avoid filesystem scans.
if (!isset($this->moduleFiles)) {
$this->moduleFiles = state()
->get('system.module.files') ?: array();
$this->themeFiles = state()
->get('system.theme.files') ?: array();
$this->themeData = state()
->get('system.theme.data') ?: array();
}
parent::setUp();
// Build a minimal, partially mocked environment for unit tests.
$this
->containerBuild(drupal_container());
// Make sure it survives kernel rebuilds.
$GLOBALS['conf']['container_bundles'][] = 'Drupal\\simpletest\\TestBundle';
state()
->set('system.module.files', $this->moduleFiles);
state()
->set('system.theme.files', $this->themeFiles);
state()
->set('system.theme.data', $this->themeData);
// Bootstrap the kernel.
// No need to dump it; this test runs in-memory.
$this->kernel = new DrupalKernel('testing', TRUE, drupal_classloader(), FALSE);
$this->kernel
->boot();
// Ensure that the module list is initially empty.
$this->moduleList = array();
// Collect and set a fixed module list.
$class = get_class($this);
$modules = array();
while ($class) {
if (property_exists($class, 'modules')) {
$modules = array_merge($modules, $class::$modules);
}
$class = get_parent_class($class);
}
$this
->enableModules($modules, FALSE);
}