Issue #3023747 by mikelutz, heddn: D6 profile migrations assume stubs, which fail

8.7.x
Nathaniel Catchpole 2019-01-07 11:40:36 +00:00
parent 34b94c8c3a
commit 95b3b17867
3 changed files with 90 additions and 5 deletions

View File

@ -0,0 +1,43 @@
<?php
namespace Drupal\Tests\migrate_drupal\Kernel\d6;
use Drupal\KernelTests\FileSystemModuleDiscoveryDataProviderTrait;
/**
* Tests the getProcess() method of all Drupal 6 migrations.
*
* @group migrate_drupal
*/
class MigrationProcessTest extends MigrateDrupal6TestBase {
use FileSystemModuleDiscoveryDataProviderTrait;
/**
* {@inheritdoc}
*/
public function setUp() {
self::$modules = array_keys($this->coreModuleListDataProvider());
parent::setUp();
}
/**
* Tests that calling getProcess() on a migration does not throw an exception.
*
* @throws \Exception
*/
public function testGetProcess() {
/** @var \Drupal\migrate\Plugin\MigrationPluginManagerInterface $plugin_manager */
$plugin_manager = $this->container->get('plugin.manager.migration');
$migrations = $plugin_manager->createInstancesByTag('Drupal 6');
foreach ($migrations as $migration) {
try {
$process = $migration->getProcess();
}
catch (\Exception $e) {
$this->fail(sprintf("Migration %s process failed with error: %s", $migration->label(), $e->getMessage()));
}
$this->assertNotNull($process);
}
}
}

View File

@ -0,0 +1,43 @@
<?php
namespace Drupal\Tests\migrate_drupal\Kernel\d7;
use Drupal\KernelTests\FileSystemModuleDiscoveryDataProviderTrait;
/**
* Tests the getProcess() method of all Drupal 7 migrations.
*
* @group migrate_drupal
*/
class MigrationProcessTest extends MigrateDrupal7TestBase {
use FileSystemModuleDiscoveryDataProviderTrait;
/**
* {@inheritdoc}
*/
public function setUp() {
self::$modules = array_keys($this->coreModuleListDataProvider());
parent::setUp();
}
/**
* Tests that calling getProcess() on a migration does not throw an exception.
*
* @throws \Exception
*/
public function testGetProcess() {
/** @var \Drupal\migrate\Plugin\MigrationPluginManagerInterface $plugin_manager */
$plugin_manager = $this->container->get('plugin.manager.migration');
$migrations = $plugin_manager->createInstancesByTag('Drupal 7');
foreach ($migrations as $migration) {
try {
$process = $migration->getProcess();
}
catch (\Exception $e) {
$this->fail(sprintf("Migration %s process failed with error: %s", $migration->label(), $e->getMessage()));
}
$this->assertNotNull($process);
}
}
}

View File

@ -4,7 +4,6 @@ namespace Drupal\user\Plugin\migrate;
use Drupal\migrate\Exception\RequirementsException;
use Drupal\migrate\MigrateExecutable;
use Drupal\migrate\MigrateSkipRowException;
use Drupal\migrate\Plugin\Migration;
/**
@ -32,6 +31,7 @@ class ProfileValues extends Migration {
$definition['destination']['plugin'] = 'null';
$definition['idMap']['plugin'] = 'null';
try {
$this->checkRequirements();
$profile_field_migration = $this->migrationPluginManager->createStubMigration($definition);
$migrate_executable = new MigrateExecutable($profile_field_migration);
$source_plugin = $profile_field_migration->getSourcePlugin();
@ -45,6 +45,7 @@ class ProfileValues extends Migration {
[
'migration' => 'user_profile_field',
'source_ids' => $fid,
'no_stub' => TRUE,
];
$plugin = $this->processPluginManager->createInstance('migration_lookup', $configuration, $profile_field_migration);
$new_value = $plugin->transform($fid, $migrate_executable, $row, 'tmp');
@ -52,14 +53,12 @@ class ProfileValues extends Migration {
// Set the destination to the migrated profile field name.
$this->process[$new_value[1]] = $name;
}
else {
throw new MigrateSkipRowException("Can't migrate source field $name.");
}
}
}
catch (RequirementsException $e) {
// The checkRequirements() call will fail when the profile module does
// not exist on the source site.
// not exist on the source site, or if the required migrations have not
// yet run.
}
}
return parent::getProcess();