From 42c8484b32a956552806c350b9bcba392a7d80e7 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Sun, 10 Jul 2022 17:09:20 +0900 Subject: [PATCH] Issue #3082211 by quietone, Pooja Ganjage, danflanagan8, Spokje, benjifisher, Wim Leers, mikelutz: Migrate UI tests should provide the complete log message on failure --- .../MigrateUpgradeExecuteTestBase.php | 65 +++++++++++++++++++ .../tests/src/Functional/d6/Upgrade6Test.php | 9 +++ .../tests/src/Functional/d7/Upgrade7Test.php | 14 +++- 3 files changed, 87 insertions(+), 1 deletion(-) diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeExecuteTestBase.php b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeExecuteTestBase.php index b77618ad57e6..729dbef36b4a 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeExecuteTestBase.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeExecuteTestBase.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\migrate_drupal_ui\Functional; +use Drupal\Core\Logger\RfcLogLevel; use Drupal\Tests\migrate_drupal\Traits\CreateTestContentEntitiesTrait; /** @@ -11,6 +12,27 @@ abstract class MigrateUpgradeExecuteTestBase extends MigrateUpgradeTestBase { use CreateTestContentEntitiesTrait; + /** + * Indicates if the watchdog logs should be output. + * + * @var bool + */ + protected $outputLogs = FALSE; + + /** + * The admin username after the migration. + * + * @var string + */ + protected $migratedAdminUserName = 'admin'; + + /** + * The number of expected logged errors of type migrate_drupal_ui. + * + * @var string + */ + protected $expectedLoggedErrors = 0; + /** * {@inheritdoc} */ @@ -22,6 +44,17 @@ protected function setUp(): void { } + /** + * {@inheritdoc} + */ + protected function tearDown(): void { + if ($this->outputLogs) { + $this->outputLogs($this->migratedAdminUserName); + $this->assertLogError(); + } + parent::tearDown(); + } + /** * Executes an upgrade and then an incremental upgrade. */ @@ -70,4 +103,36 @@ public function useTestMailCollector() { $this->writeSettings($settings); } + /** + * Asserts log errors. + */ + public function assertLogError() { + $db = \Drupal::service('database'); + $num_errors = $db->select('watchdog', 'w') + ->fields('w') + ->condition('type', 'migrate_drupal_ui') + ->condition('severity', RfcLogLevel::ERROR) + ->countQuery() + ->execute() + ->fetchField(); + $this->assertSame($this->expectedLoggedErrors, (int) $num_errors); + } + + /** + * Preserve the logs pages. + */ + public function outputLogs($username) { + // Ensure user 1 is accessing the admin log. Change the username because + // the migration changes the username of user 1 but not the password. + if (\Drupal::currentUser()->id() != 1) { + $this->rootUser->name = $username; + $this->drupalLogin($this->rootUser); + } + $this->drupalGet('/admin/reports/dblog'); + while ($next_link = $this->getSession()->getPage()->findLink('Next page')) { + $next_link->click(); + } + + } + } diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php index d14d64ca564b..f794224e5cf0 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php @@ -54,6 +54,11 @@ protected function setUp(): void { $this->loadFixture($this->getModulePath('migrate_drupal') . '/tests/fixtures/drupal6.php'); + // Enable saving the logs and set the post migration admin user name. + $this->outputLogs = TRUE; + $this->migratedAdminUserName = 'root'; + $this->expectedLoggedErrors = 36; + // @todo Remove this in https://www.drupal.org/node/3267515 \Drupal::service('module_installer')->uninstall(['rdf']); } @@ -205,6 +210,10 @@ public function testUpgradeAndIncremental() { $this->assertFollowUpMigrationResults(); $this->assertEmailsSent(); + + // Save logs and check the error count. + $this->outputLogs('root'); + $this->assertLogError(); } /** diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php index d4f52fdf5b7e..ec21a350b430 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php @@ -45,6 +45,9 @@ class Upgrade7Test extends MigrateUpgradeExecuteTestBase { protected function setUp(): void { parent::setUp(); + // Install the Drupal 6 and Drupal 7 administration theme. + \Drupal::service('theme_installer')->install(['seven']); + // @todo remove in https://www.drupal.org/project/drupal/issues/3267040 // Delete the existing content made to test the ID Conflict form. Migrations // are to be done on a site without content. The test of the ID Conflict @@ -57,6 +60,11 @@ protected function setUp(): void { $this->loadFixture($this->getModulePath('migrate_drupal') . '/tests/fixtures/drupal7.php'); + // Enable saving the logs and set the post migration admin user name. + $this->outputLogs = TRUE; + $this->migratedAdminUserName = 'admin'; + $this->expectedLoggedErrors = 25; + // @todo Remove this in https://www.drupal.org/node/3267515 \Drupal::service('module_installer')->uninstall(['rdf']); } @@ -73,7 +81,7 @@ protected function getSourceBasePath() { */ protected function getEntityCounts() { return [ - 'block' => 27, + 'block' => 43, 'block_content' => 1, 'block_content_type' => 1, 'comment' => 4, @@ -235,6 +243,10 @@ public function testUpgradeAndIncremental() { $this->assertFollowUpMigrationResults(); $this->assertEmailsSent(); + + // Save logs and check the error count. + $this->outputLogs('admin'); + $this->assertLogError(); } /** -- GitLab