function DirectWriteTest::testMaintenanceModeNotEnteredIfErrorOnPreRequire
Tests that pre-require errors prevent maintenance mode during direct-write.
File
-
core/
modules/ package_manager/ tests/ src/ Kernel/ DirectWriteTest.php, line 189
Class
- DirectWriteTest
- @covers \Drupal\package_manager\EventSubscriber\DirectWriteSubscriber @covers \Drupal\package_manager\SandboxManagerBase::isDirectWrite
Namespace
Drupal\Tests\package_manager\KernelCode
public function testMaintenanceModeNotEnteredIfErrorOnPreRequire() : void {
$this->setSetting('package_manager_allow_direct_write', TRUE);
// Sanity check: we shouldn't be in maintenance mode to begin with.
$state = $this->container
->get(StateInterface::class);
$this->assertEmpty($state->get('system.maintenance_mode'));
// Set up an event subscriber which will flag an error.
$this->container
->get(EventDispatcherInterface::class)
->addListener(PreRequireEvent::class, function (PreRequireEvent $event) : void {
$event->addError([
$this->t('Maintenance mode should not happen.'),
]);
});
$sandbox_manager = $this->createStage(TestDirectWriteSandboxManager::class);
$sandbox_manager->create();
try {
$sandbox_manager->require([
'ext-json:*',
]);
$this->fail('Expected an exception to be thrown on pre-require.');
} catch (SandboxEventException $e) {
$this->assertSame("Maintenance mode should not happen.\n", $e->getMessage());
// We should never have entered maintenance mode.
$this->assertFalse($this->preRequireMaintenanceMode);
// Sanity check: the post-require event should never have been dispatched.
$this->assertNull($this->postRequireMaintenanceMode);
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.