Update to Drupal 8.1.8. For more information, see https://www.drupal.org/project/drupal/releases/8.1.8
This commit is contained in:
parent
e9f047ccf8
commit
f9f23cdf38
312 changed files with 6751 additions and 1546 deletions
|
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\system\Functional\Render;
|
||||
|
||||
use Drupal\Core\Url;
|
||||
use Drupal\Tests\BrowserTestBase;
|
||||
|
||||
/**
|
||||
* Functional test verifying that messages set in placeholders always appear.
|
||||
*
|
||||
* @group Render
|
||||
*/
|
||||
class PlaceholderMessageTest extends BrowserTestBase {
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = ['render_placeholder_message_test'];
|
||||
|
||||
/**
|
||||
* Test rendering of message placeholder.
|
||||
*/
|
||||
public function testMessagePlaceholder() {
|
||||
$messages_markup = '<div role="contentinfo" aria-label="Status message"';
|
||||
|
||||
$test_routes = [
|
||||
// Messages placeholder rendered first.
|
||||
'render_placeholder_message_test.first',
|
||||
// Messages placeholder rendered after one, before another.
|
||||
'render_placeholder_message_test.middle',
|
||||
// Messages placeholder rendered last.
|
||||
'render_placeholder_message_test.last',
|
||||
];
|
||||
|
||||
$assert = $this->assertSession();
|
||||
foreach ($test_routes as $route) {
|
||||
// Verify that we start off with zero messages queued.
|
||||
$this->drupalGet(Url::fromRoute('render_placeholder_message_test.queued'));
|
||||
$assert->responseNotContains($messages_markup);
|
||||
|
||||
// Verify the test case at this route behaves as expected.
|
||||
$this->drupalGet(Url::fromRoute($route));
|
||||
$assert->elementContains('css', 'p.logged-message:nth-of-type(1)', 'Message: P1');
|
||||
$assert->elementContains('css', 'p.logged-message:nth-of-type(2)', 'Message: P2');
|
||||
$assert->responseContains($messages_markup);
|
||||
$assert->elementExists('css', 'div[aria-label="Status message"] ul');
|
||||
$assert->elementContains('css', 'div[aria-label="Status message"] ul li:nth-of-type(1)', 'P1');
|
||||
$assert->elementContains('css', 'div[aria-label="Status message"] ul li:nth-of-type(2)', 'P2');
|
||||
|
||||
// Verify that we end with all messages printed, hence again zero queued.
|
||||
$this->drupalGet(Url::fromRoute('render_placeholder_message_test.queued'));
|
||||
$assert->responseNotContains($messages_markup);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -126,7 +126,7 @@ class ModuleHandlerTest extends KernelTestBase {
|
|||
$this->pass(t('ModuleInstaller::install() throws an exception if dependencies are missing.'));
|
||||
}
|
||||
|
||||
$this->assertFalse($this->moduleHandler()->moduleExists('color'), 'ModuleHandler::install() aborts if dependencies are missing.');
|
||||
$this->assertFalse($this->moduleHandler()->moduleExists('color'), 'ModuleInstaller::install() aborts if dependencies are missing.');
|
||||
|
||||
// Fix the missing dependency.
|
||||
// Color module depends on Config. Config depends on Help module.
|
||||
|
|
@ -134,7 +134,7 @@ class ModuleHandlerTest extends KernelTestBase {
|
|||
drupal_static_reset('system_rebuild_module_data');
|
||||
|
||||
$result = $this->moduleInstaller()->install(array('color'));
|
||||
$this->assertTrue($result, 'ModuleHandler::install() returns the correct value.');
|
||||
$this->assertTrue($result, 'ModuleInstaller::install() returns the correct value.');
|
||||
|
||||
// Verify that the fake dependency chain was installed.
|
||||
$this->assertTrue($this->moduleHandler()->moduleExists('config') && $this->moduleHandler()->moduleExists('help'), 'Dependency chain was installed.');
|
||||
|
|
@ -147,10 +147,10 @@ class ModuleHandlerTest extends KernelTestBase {
|
|||
$this->assertEqual($module_order, array('help', 'config', 'color'));
|
||||
|
||||
// Uninstall all three modules explicitly, but in the incorrect order,
|
||||
// and make sure that ModuleHandler::uninstall() uninstalled them in the
|
||||
// and make sure that ModuleInstaller::uninstall() uninstalled them in the
|
||||
// correct sequence.
|
||||
$result = $this->moduleInstaller()->uninstall(array('config', 'help', 'color'));
|
||||
$this->assertTrue($result, 'ModuleHandler::uninstall() returned TRUE.');
|
||||
$this->assertTrue($result, 'ModuleInstaller::uninstall() returned TRUE.');
|
||||
|
||||
foreach (array('color', 'config', 'help') as $module) {
|
||||
$this->assertEqual(drupal_get_installed_schema_version($module), SCHEMA_UNINSTALLED, "$module module was uninstalled.");
|
||||
|
|
@ -161,12 +161,12 @@ class ModuleHandlerTest extends KernelTestBase {
|
|||
// Enable Color module again, which should enable both the Config module and
|
||||
// Help module. But, this time do it with Config module declaring a
|
||||
// dependency on a specific version of Help module in its info file. Make
|
||||
// sure that Drupal\Core\Extension\ModuleHandler::install() still works.
|
||||
// sure that Drupal\Core\Extension\ModuleInstaller::install() still works.
|
||||
\Drupal::state()->set('module_test.dependency', 'version dependency');
|
||||
drupal_static_reset('system_rebuild_module_data');
|
||||
|
||||
$result = $this->moduleInstaller()->install(array('color'));
|
||||
$this->assertTrue($result, 'ModuleHandler::install() returns the correct value.');
|
||||
$this->assertTrue($result, 'ModuleInstaller::install() returns the correct value.');
|
||||
|
||||
// Verify that the fake dependency chain was installed.
|
||||
$this->assertTrue($this->moduleHandler()->moduleExists('config') && $this->moduleHandler()->moduleExists('help'), 'Dependency chain was installed.');
|
||||
|
|
@ -202,7 +202,7 @@ class ModuleHandlerTest extends KernelTestBase {
|
|||
|
||||
// Uninstall the profile module "dependency".
|
||||
$result = $this->moduleInstaller()->uninstall(array($dependency));
|
||||
$this->assertTrue($result, 'ModuleHandler::uninstall() returns TRUE.');
|
||||
$this->assertTrue($result, 'ModuleInstaller::uninstall() returns TRUE.');
|
||||
$this->assertFalse($this->moduleHandler()->moduleExists($dependency));
|
||||
$this->assertEqual(drupal_get_installed_schema_version($dependency), SCHEMA_UNINSTALLED, "$dependency module was uninstalled.");
|
||||
|
||||
|
|
@ -240,7 +240,7 @@ class ModuleHandlerTest extends KernelTestBase {
|
|||
|
||||
// Uninstalling entity_test is not possible when there is content.
|
||||
try {
|
||||
$message = 'ModuleHandler::uninstall() throws ModuleUninstallValidatorException upon uninstalling a module which does not pass validation.';
|
||||
$message = 'ModuleInstaller::uninstall() throws ModuleUninstallValidatorException upon uninstalling a module which does not pass validation.';
|
||||
$this->moduleInstaller()->uninstall(array('entity_test'));
|
||||
$this->fail($message);
|
||||
}
|
||||
|
|
@ -250,7 +250,7 @@ class ModuleHandlerTest extends KernelTestBase {
|
|||
|
||||
// Uninstalling help needs entity_test to be un-installable.
|
||||
try {
|
||||
$message = 'ModuleHandler::uninstall() throws ModuleUninstallValidatorException upon uninstalling a module which does not pass validation.';
|
||||
$message = 'ModuleInstaller::uninstall() throws ModuleUninstallValidatorException upon uninstalling a module which does not pass validation.';
|
||||
$this->moduleInstaller()->uninstall(array('help'));
|
||||
$this->fail($message);
|
||||
}
|
||||
|
|
@ -262,7 +262,7 @@ class ModuleHandlerTest extends KernelTestBase {
|
|||
$entity->delete();
|
||||
|
||||
$result = $this->moduleInstaller()->uninstall(array('help'));
|
||||
$this->assertTrue($result, 'ModuleHandler::uninstall() returns TRUE.');
|
||||
$this->assertTrue($result, 'ModuleInstaller::uninstall() returns TRUE.');
|
||||
$this->assertEqual(drupal_get_installed_schema_version('entity_test'), SCHEMA_UNINSTALLED, "entity_test module was uninstalled.");
|
||||
}
|
||||
|
||||
|
|
|
|||
49
core/modules/system/tests/src/Kernel/Render/ClassyTest.php
Normal file
49
core/modules/system/tests/src/Kernel/Render/ClassyTest.php
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\system\Kernel\Render;
|
||||
|
||||
use Drupal\KernelTests\KernelTestBase;
|
||||
|
||||
/**
|
||||
* Tests the Classy theme.
|
||||
*
|
||||
* @group Theme
|
||||
*/
|
||||
class ClassyTest extends KernelTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = array('system', 'twig_theme_test');
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
// Use the classy theme.
|
||||
$this->container->get('theme_installer')->install(['classy']);
|
||||
$this->container->get('config.factory')
|
||||
->getEditable('system.theme')
|
||||
->set('default', 'classy')
|
||||
->save();
|
||||
// Clear the theme registry.
|
||||
$this->container->set('theme.registry', NULL);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the classy theme.
|
||||
*/
|
||||
function testClassyTheme() {
|
||||
drupal_set_message('An error occurred', 'error');
|
||||
drupal_set_message('But then something nice happened');
|
||||
$messages = array(
|
||||
'#type' => 'status_messages',
|
||||
);
|
||||
$this->render($messages);
|
||||
$this->assertNoText('custom-test-messages-class', 'The custom class attribute value added in the status messages preprocess function is not displayed as page content.');
|
||||
}
|
||||
|
||||
}
|
||||
112
core/modules/system/tests/src/Kernel/System/CronQueueTest.php
Normal file
112
core/modules/system/tests/src/Kernel/System/CronQueueTest.php
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\system\Kernel\System;
|
||||
|
||||
use Drupal\Core\Database\Database;
|
||||
use Drupal\KernelTests\KernelTestBase;
|
||||
|
||||
/**
|
||||
* Tests the Cron Queue runner.
|
||||
*
|
||||
* @group system
|
||||
*/
|
||||
class CronQueueTest extends KernelTestBase {
|
||||
|
||||
/**
|
||||
* The modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = ['system', 'cron_queue_test'];
|
||||
|
||||
/**
|
||||
* The database connection.
|
||||
*
|
||||
* @var \Drupal\Core\Database\Connection
|
||||
*/
|
||||
protected $connection;
|
||||
|
||||
/**
|
||||
* The cron service.
|
||||
*
|
||||
* @var \Drupal\Core\Cron
|
||||
*/
|
||||
protected $cron;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
// These additional tables are necessary because $this->cron->run() calls
|
||||
// system_cron().
|
||||
$this->installSchema('system', ['key_value_expire']);
|
||||
|
||||
$this->connection = Database::getConnection();
|
||||
$this->cron = \Drupal::service('cron');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that exceptions thrown by workers are handled properly.
|
||||
*/
|
||||
public function testExceptions() {
|
||||
// Get the queue to test the normal Exception.
|
||||
$queue = $this->container->get('queue')->get('cron_queue_test_exception');
|
||||
|
||||
// Enqueue an item for processing.
|
||||
$queue->createItem(array($this->randomMachineName() => $this->randomMachineName()));
|
||||
|
||||
// Run cron; the worker for this queue should throw an exception and handle
|
||||
// it.
|
||||
$this->cron->run();
|
||||
$this->assertEqual(\Drupal::state()->get('cron_queue_test_exception'), 1);
|
||||
|
||||
// The item should be left in the queue.
|
||||
$this->assertEqual($queue->numberOfItems(), 1, 'Failing item still in the queue after throwing an exception.');
|
||||
|
||||
// Expire the queue item manually. system_cron() relies in REQUEST_TIME to
|
||||
// find queue items whose expire field needs to be reset to 0. This is a
|
||||
// Kernel test, so REQUEST_TIME won't change when cron runs.
|
||||
// @see system_cron()
|
||||
// @see \Drupal\Core\Cron::processQueues()
|
||||
$this->connection->update('queue')
|
||||
->condition('name', 'cron_queue_test_exception')
|
||||
->fields(['expire' => REQUEST_TIME - 1])
|
||||
->execute();
|
||||
$this->cron->run();
|
||||
$this->assertEqual(\Drupal::state()->get('cron_queue_test_exception'), 2);
|
||||
$this->assertEqual($queue->numberOfItems(), 0, 'Item was processed and removed from the queue.');
|
||||
|
||||
// Get the queue to test the specific SuspendQueueException.
|
||||
$queue = $this->container->get('queue')->get('cron_queue_test_broken_queue');
|
||||
|
||||
// Enqueue several item for processing.
|
||||
$queue->createItem('process');
|
||||
$queue->createItem('crash');
|
||||
$queue->createItem('ignored');
|
||||
|
||||
// Run cron; the worker for this queue should process as far as the crashing
|
||||
// item.
|
||||
$this->cron->run();
|
||||
|
||||
// Only one item should have been processed.
|
||||
$this->assertEqual($queue->numberOfItems(), 2, 'Failing queue stopped processing at the failing item.');
|
||||
|
||||
// Check the items remaining in the queue. The item that throws the
|
||||
// exception gets released by cron, so we can claim it again to check it.
|
||||
$item = $queue->claimItem();
|
||||
$this->assertEqual($item->data, 'crash', 'Failing item remains in the queue.');
|
||||
$item = $queue->claimItem();
|
||||
$this->assertEqual($item->data, 'ignored', 'Item beyond the failing item remains in the queue.');
|
||||
|
||||
// Test the requeueing functionality.
|
||||
$queue = $this->container->get('queue')->get('cron_queue_test_requeue_exception');
|
||||
$queue->createItem([]);
|
||||
$this->cron->run();
|
||||
|
||||
$this->assertEqual(\Drupal::state()->get('cron_queue_test_requeue_exception'), 2);
|
||||
$this->assertFalse($queue->numberOfItems());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in a new issue