diff --git a/core/modules/migrate/src/Entity/Migration.php b/core/modules/migrate/src/Entity/Migration.php index 6f7969c..9fb93b7 100644 --- a/core/modules/migrate/src/Entity/Migration.php +++ b/core/modules/migrate/src/Entity/Migration.php @@ -342,7 +342,7 @@ public function checkRequirements() { } } if ($missing_migrations) { - throw new RequirementsException(String::format('Missing migrations @requirements', ['@requirements' => implode(', ', $missing_migrations)]), ['requirements' => $missing_migrations]); + throw new RequirementsException(String::format('Missing migrations @requirements.', ['@requirements' => implode(', ', $missing_migrations)]), ['requirements' => $missing_migrations]); } } diff --git a/core/modules/migrate/src/Exception/RequirementsException.php b/core/modules/migrate/src/Exception/RequirementsException.php index 98c4934..12b5de1 100644 --- a/core/modules/migrate/src/Exception/RequirementsException.php +++ b/core/modules/migrate/src/Exception/RequirementsException.php @@ -41,4 +41,30 @@ public function __construct($message = "", array $requirements = [], $code = 0, $this->requirements = $requirements; } + /** + * Get an array of requirements. + * + * @return array + * The requirements. + */ + public function getRequirements() { + return $this->requirements; + } + + /** + * Get the requirements as a string. + * + * @return string + * A formatted requirements string. + */ + public function getRequirementsString() { + $output = ''; + foreach ($this->requirements as $requirement_type => $requirements) { + foreach ($requirements as $value) { + $output .= "$requirement_type: $value. "; + } + } + return trim($output); + } + } diff --git a/core/modules/migrate/src/MigrateExecutable.php b/core/modules/migrate/src/MigrateExecutable.php index a8b3f33..a68b087 100644 --- a/core/modules/migrate/src/MigrateExecutable.php +++ b/core/modules/migrate/src/MigrateExecutable.php @@ -239,9 +239,10 @@ public function import() { } catch (RequirementsException $e) { $this->message->display( - $this->t('Migration @id did not meet the requirements. @message', array( + $this->t('Migration @id did not meet the requirements. @message @requirements', array( '@id' => $this->migration->id(), '@message' => $e->getMessage(), + '@requirements' => $e->getRequirementsString(), )), 'error'); return MigrationInterface::RESULT_FAILED; } diff --git a/core/modules/migrate_drupal/src/Tests/dependencies/MigrateDependenciesTest.php b/core/modules/migrate_drupal/src/Tests/dependencies/MigrateDependenciesTest.php index 8d69c64..c9085f1 100644 --- a/core/modules/migrate_drupal/src/Tests/dependencies/MigrateDependenciesTest.php +++ b/core/modules/migrate_drupal/src/Tests/dependencies/MigrateDependenciesTest.php @@ -64,7 +64,7 @@ public function testAggregatorMigrateDependencies() { $executable = new MigrateExecutable($migration, $this); $this->startCollectingMessages(); $executable->import(); - $this->assertEqual($this->migrateMessages['error'], array(String::format('Migration @id did not meet the requirements', array('@id' => $migration->id())))); + $this->assertEqual($this->migrateMessages['error'], array(String::format('Migration @id did not meet the requirements. Missing migrations d6_aggregator_feed. requirements: d6_aggregator_feed.', array('@id' => $migration->id())))); $this->collectMessages = FALSE; }