diff --git a/core/modules/migrate/src/Plugin/MigrationPluginManager.php b/core/modules/migrate/src/Plugin/MigrationPluginManager.php index df1915372242c9ee0807cfa1a7e1d15c8f94d336..5f05d6dd4af02b5c081df006ddc434933920aff7 100644 --- a/core/modules/migrate/src/Plugin/MigrationPluginManager.php +++ b/core/modules/migrate/src/Plugin/MigrationPluginManager.php @@ -145,7 +145,7 @@ public function expandPluginIds(array $migration_ids) { $plugin_ids = []; $all_ids = array_keys($this->getDefinitions()); foreach ($migration_ids as $id) { - $plugin_ids += preg_grep('/^' . preg_quote($id, '/') . PluginBase::DERIVATIVE_SEPARATOR . '/', $all_ids); + $plugin_ids = array_merge($plugin_ids, preg_grep('/^' . preg_quote($id, '/') . PluginBase::DERIVATIVE_SEPARATOR . '/', $all_ids)); if ($this->hasDefinition($id)) { $plugin_ids[] = $id; } diff --git a/core/modules/migrate/tests/src/Unit/MigrationPluginManagerTest.php b/core/modules/migrate/tests/src/Unit/MigrationPluginManagerTest.php index 1744878220337bdc359e55c731f68e9e510e4d18..0982d783336fd33451a0bb0d97b604dc6ecef2c3 100644 --- a/core/modules/migrate/tests/src/Unit/MigrationPluginManagerTest.php +++ b/core/modules/migrate/tests/src/Unit/MigrationPluginManagerTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\migrate\Unit; +use Drupal\Core\Cache\CacheBackendInterface; use Drupal\migrate\Plugin\Migration; use Drupal\migrate\Plugin\MigrationPluginManager; use Drupal\Tests\UnitTestCase; @@ -65,6 +66,25 @@ public function testDependencyBuilding($migrations_data, $result_ids) { } } + /** + * Tests that expandPluginIds returns all derivatives. + */ + public function testExpandPluginIds() { + $backend = $this->prophesize(CacheBackendInterface::class); + $cache = new \stdClass(); + $cache->data = [ + 'a:a' => ['provider' => 'core'], + 'a:b' => ['provider' => 'core'], + 'b' => ['provider' => 'core'], + ]; + $backend->get('migration_plugins')->willReturn($cache); + $this->pluginManager->setCacheBackend($backend->reveal(), 'migration_plugins'); + $plugin_ids = $this->pluginManager->expandPluginIds(['b', 'a']); + $this->assertContains('a:a', $plugin_ids); + $this->assertContains('a:b', $plugin_ids); + $this->assertContains('b', $plugin_ids); + } + /** * Provide dependency data for testing. */