Skip to content

Commit

Permalink
Issue #2969231 by quietone, NickDickinsonWilde, joachim, xjm: errors …
Browse files Browse the repository at this point in the history
…in migration process configuration don't give a clear message

(cherry picked from commit 93545bd5374746e065d9a01372047286d719acbd)
  • Loading branch information
alexpott committed May 29, 2020
1 parent ede5565 commit 08b5677
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 8 deletions.
4 changes: 4 additions & 0 deletions modules/migrate/src/Plugin/Migration.php
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,10 @@ protected function getProcessNormalized(array $process) {
if (isset($configuration['plugin'])) {
$configuration = [$configuration];
}
if (!is_array($configuration)) {
$migration_id = $this->getPluginId();
throw new MigrateException("Invalid process for destination '$destination' in migration '$migration_id'");
}
$normalized_configurations[$destination] = $configuration;
}
return $normalized_configurations;
Expand Down
57 changes: 49 additions & 8 deletions modules/migrate/tests/src/Kernel/Plugin/MigrationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,23 +42,64 @@ public function testGetProcessPluginsException() {
}

/**
* Tests Migration::getDestinationPlugin()
* Tests Migration::getProcessPlugins()
*
* @covers ::getDestinationPlugin
* @param array $process
* The migration process pipeline.
*
* @covers ::getProcessPlugins
*
* @dataProvider getProcessPluginsExceptionMessageProvider
*/
public function testGetProcessPluginsExceptionMessage() {
public function testGetProcessPluginsExceptionMessage(array $process) {
// Test with an invalid process pipeline.
$plugin_definition = [
'process' => [
'dest1' => 123,
],
'id' => 'foo',
'process' => $process,
];
$migration = \Drupal::service('plugin.manager.migration')->createStubMigration($plugin_definition);

reset($process);
$destination = key(($process));

$migration = \Drupal::service('plugin.manager.migration')
->createStubMigration($plugin_definition);
$this->expectException(MigrateException::class);
$this->expectExceptionMessage("Process configuration for 'dest1' must be an array");
$this->expectExceptionMessage("Invalid process for destination '$destination' in migration 'foo'");
$migration->getProcessPlugins();
}

/**
* Provides data for testing invalid process pipeline.
*/
public function getProcessPluginsExceptionMessageProvider() {
return [
[
'Null' =>
[
'dest' => NULL,
],
],
[
'boolean' =>
[
'dest' => TRUE,
],
],
[
'integer' =>
[
'dest' => 2370,
],
],
[
'float' =>
[
'dest' => 1.61,
],
],
];
}

/**
* Tests Migration::getMigrationDependencies()
*
Expand Down

0 comments on commit 08b5677

Please sign in to comment.