diff --git a/core/modules/file/migration_templates/d7_file.yml b/core/modules/file/migration_templates/d7_file.yml index 7ebf83b..5b1ecf5 100644 --- a/core/modules/file/migration_templates/d7_file.yml +++ b/core/modules/file/migration_templates/d7_file.yml @@ -6,6 +6,7 @@ migration_tags: - Drupal 7 source: plugin: d7_file + scheme: public constants: # source_base_path must be set by the tool configuring this migration. It # represents the fully qualified path relative to which uris in the files diff --git a/core/modules/file/migration_templates/d7_file_private.yml b/core/modules/file/migration_templates/d7_file_private.yml new file mode 100644 index 0000000..5fcf984 --- /dev/null +++ b/core/modules/file/migration_templates/d7_file_private.yml @@ -0,0 +1,42 @@ +id: d7_file_private +label: Files +migration_tags: + - Drupal 7 +source: + plugin: d7_file + scheme: private + constants: + # source_file_private_path must be set by the tool configuring this migration. + # It represents the fully qualified path relative to which uris in the files + # table are specified, and must end with a /. See source_full_path + # configuration in this migration's process pipeline as an example. + source_file_private_path: '' +process: + # If you are using this file to build a custom migration consider removing + # the fid field to allow incremental migrations. + fid: fid + filename: filename + source_file_private_full_path: + - + plugin: concat + delimiter: / + source: + - constants/source_file_private_path + - filepath + uri: + plugin: file_copy + source: + - '@source_file_private_full_path' + - uri + filemime: filemime + # filesize is dynamically computed when file entities are saved, so there is + # no point in migrating it. + # filesize: filesize + status: status + # Drupal 7 didn't keep track of the file's creation or update time -- all it + # had was the vague "timestamp" column. So we'll use it for both. + created: timestamp + changed: timestamp + uid: uid +destination: + plugin: entity:file diff --git a/core/modules/file/src/Plugin/migrate/source/d7/File.php b/core/modules/file/src/Plugin/migrate/source/d7/File.php index e418f82..6752575 100644 --- a/core/modules/file/src/Plugin/migrate/source/d7/File.php +++ b/core/modules/file/src/Plugin/migrate/source/d7/File.php @@ -83,8 +83,12 @@ public function prepareRow(Row $row) { $path = str_replace(['public:/', 'private:/', 'temporary:/'], [$this->publicPath, $this->privatePath, $this->temporaryPath], $row->getSourceProperty('uri')); // At this point, $path could be an absolute path or a relative path, // depending on how the scheme's variable was set. So we need to shear out - // the source_base_path in order to make them all relative. - $path = str_replace($this->configuration['constants']['source_base_path'], NULL, $path); + if (isset($this->configuration['constants']['source_file_private_path'])) { + $path = str_replace($this->configuration['constants']['source_file_private_path'], NULL, realpath($path)); + } + else { + $path = str_replace($this->configuration['constants']['source_base_path'], NULL, $path); + } $row->setSourceProperty('filepath', $path); return parent::prepareRow($row); } diff --git a/core/modules/file/tests/src/Kernel/Migrate/d7/MigratePrivateFileTest.php b/core/modules/file/tests/src/Kernel/Migrate/d7/MigratePrivateFileTest.php new file mode 100644 index 0000000..076c1fa --- /dev/null +++ b/core/modules/file/tests/src/Kernel/Migrate/d7/MigratePrivateFileTest.php @@ -0,0 +1,93 @@ +setSetting('file_private_path', 'sites/default/private'); + $this->installEntitySchema('file'); + $fs = $this->container->get('file_system'); + + // Put test file in the source directory. + file_put_contents('private://Babylon5.txt', str_repeat('*', 3)); + + /** @var \Drupal\migrate\Plugin\Migration $migration */ + $migration = $this->getMigration('d7_file_private'); + // Set the source plugin's source_file_private_path configuration value, + // which would normally be set by the user running the migration. + $source = $migration->getSourceConfiguration(); + $source['constants']['source_file_private_path'] = $fs->realpath('private://'); + $migration->set('source', $source); + $this->executeMigration($migration); + } + + /** + * {@inheritdoc} + */ + public function register(ContainerBuilder $container) { + parent::register($container); + $container->register('stream_wrapper.private', 'Drupal\Core\StreamWrapper\PrivateStream') + ->addTag('stream_wrapper', ['scheme' => 'private']); + } + + /** + * Tests a single file entity. + * + * @param int $id + * The file ID. + * @param string $name + * The expected file name. + * @param string $uri + * The expected URI. + * @param string $mime + * The expected MIME type. + * @param int $size + * The expected file size. + * @param int $created + * The expected creation time. + * @param int $changed + * The expected modification time. + * @param int $uid + * The expected owner ID. + */ + protected function assertEntity($id, $name, $uri, $mime, $size, $created, $changed, $uid) { + /** @var \Drupal\file\FileInterface $file */ + $file = File::load($id); + $this->assertTrue($file instanceof FileInterface); + $this->assertSame($name, $file->getFilename()); + $this->assertSame($uri, $file->getFileUri()); + $this->assertTrue(file_exists($uri)); + $this->assertSame($mime, $file->getMimeType()); + $this->assertSame($size, $file->getSize()); + // isPermanent(), isTemporary(), etc. are determined by the status column. + $this->assertTrue($file->isPermanent()); + $this->assertSame($created, $file->getCreatedTime()); + $this->assertSame($changed, $file->getChangedTime()); + $this->assertSame($uid, $file->getOwnerId()); + } + + /** + * Tests that all expected files are migrated. + */ + public function testFileMigration() { + $this->assertEntity(3, 'Babylon5.txt', 'private://Babylon5.txt', 'text/plain', '3', '1486104045', '1486104045', '1'); + } + +} diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal7.php b/core/modules/migrate_drupal/tests/fixtures/drupal7.php index 8c96dae..ee0cd68 100644 --- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php +++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php @@ -3426,6 +3426,21 @@ 'translatable' => '0', 'deleted' => '0', )) +->values(array( + 'id' => '25', + 'field_name' => 'field_private_file', + 'type' => 'file', + 'module' => 'file', + 'active' => '1', + 'storage_type' => 'field_sql_storage', + 'storage_module' => 'field_sql_storage', + 'storage_active' => '1', + 'locked' => '0', + 'data' => 'a:7:{s:12:"translatable";s:1:"0";s:12:"entity_types";a:0:{}s:8:"settings";a:3:{s:13:"display_field";i:0;s:15:"display_default";i:0;s:10:"uri_scheme";s:7:"private";}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:29:"field_data_field_private_file";a:3:{s:3:"fid";s:22:"field_private_file_fid";s:7:"display";s:26:"field_private_file_display";s:11:"description";s:30:"field_private_file_description";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:33:"field_revision_field_private_file";a:3:{s:3:"fid";s:22:"field_private_file_fid";s:7:"display";s:26:"field_private_file_display";s:11:"description";s:30:"field_private_file_description";}}}}}s:12:"foreign keys";a:1:{s:3:"fid";a:2:{s:5:"table";s:12:"file_managed";s:7:"columns";a:1:{s:3:"fid";s:3:"fid";}}}s:7:"indexes";a:1:{s:3:"fid";a:1:{i:0;s:3:"fid";}}s:2:"id";s:2:"25";}', + 'cardinality' => '1', + 'translatable' => '0', + 'deleted' => '0', +)) ->execute(); $connection->schema()->createTable('field_config_instance', array( @@ -3837,6 +3852,15 @@ 'data' => 'a:7:{s:5:"label";s:14:"Term Reference";s:6:"widget";a:5:{s:6:"weight";s:2:"14";s:4:"type";s:21:"taxonomy_autocomplete";s:6:"module";s:8:"taxonomy";s:6:"active";i:0;s:8:"settings";a:2:{s:4:"size";i:60;s:17:"autocomplete_path";s:21:"taxonomy/autocomplete";}}s:8:"settings";a:1:{s:18:"user_register_form";b:0;}s:7:"display";a:1:{s:7:"default";a:4:{s:5:"label";s:5:"above";s:4:"type";s:6:"hidden";s:6:"weight";s:2:"13";s:8:"settings";a:0:{}}}s:8:"required";i:0;s:11:"description";s:0:"";s:13:"default_value";N;}', 'deleted' => '0', )) +->values(array( + 'id' => '42', + 'field_id' => '25', + 'field_name' => 'field_private_file', + 'entity_type' => 'node', + 'bundle' => 'test_content_type', + 'data' => 'a:6:{s:5:"label";s:12:"Private file";s:6:"widget";a:5:{s:6:"weight";s:2:"19";s:4:"type";s:12:"file_generic";s:6:"module";s:4:"file";s:6:"active";i:1;s:8:"settings";a:1:{s:18:"progress_indicator";s:8:"throbber";}}s:8:"settings";a:5:{s:14:"file_directory";s:0:"";s:15:"file_extensions";s:3:"txt";s:12:"max_filesize";s:0:"";s:17:"description_field";i:0;s:18:"user_register_form";b:0;}s:7:"display";a:1:{s:7:"default";a:5:{s:5:"label";s:5:"above";s:4:"type";s:12:"file_default";s:8:"settings";a:0:{}s:6:"module";s:4:"file";s:6:"weight";i:18;}}s:8:"required";i:0;s:11:"description";s:0:"";}', + 'deleted' => '0', +)) ->execute(); $connection->schema()->createTable('field_data_body', array( @@ -5340,13 +5364,136 @@ 'bundle' => 'test_content_type', 'deleted' => '0', 'entity_id' => '1', - 'revision_id' => '1', + 'revision_id' => '6', 'language' => 'und', 'delta' => '0', 'field_phone_value' => '99-99-99-99', )) ->execute(); +$connection->schema()->createTable('field_data_field_private_file', array( + 'fields' => array( + 'entity_type' => array( + 'type' => 'varchar', + 'not null' => TRUE, + 'length' => '128', + 'default' => '', + ), + 'bundle' => array( + 'type' => 'varchar', + 'not null' => TRUE, + 'length' => '128', + 'default' => '', + ), + 'deleted' => array( + 'type' => 'int', + 'not null' => TRUE, + 'size' => 'tiny', + 'default' => '0', + ), + 'entity_id' => array( + 'type' => 'int', + 'not null' => TRUE, + 'size' => 'normal', + 'unsigned' => TRUE, + ), + 'revision_id' => array( + 'type' => 'int', + 'not null' => FALSE, + 'size' => 'normal', + 'unsigned' => TRUE, + ), + 'language' => array( + 'type' => 'varchar', + 'not null' => TRUE, + 'length' => '32', + 'default' => '', + ), + 'delta' => array( + 'type' => 'int', + 'not null' => TRUE, + 'size' => 'normal', + 'unsigned' => TRUE, + ), + 'field_private_file_fid' => array( + 'type' => 'int', + 'not null' => FALSE, + 'size' => 'normal', + 'unsigned' => TRUE, + ), + 'field_private_file_display' => array( + 'type' => 'int', + 'not null' => TRUE, + 'size' => 'tiny', + 'default' => '1', + 'unsigned' => TRUE, + ), + 'field_private_file_description' => array( + 'type' => 'text', + 'not null' => FALSE, + 'size' => 'normal', + ), + ), + 'primary key' => array( + 'entity_type', + 'entity_id', + 'deleted', + 'delta', + 'language', + ), + 'indexes' => array( + 'entity_type' => array( + 'entity_type', + ), + 'bundle' => array( + 'bundle', + ), + 'deleted' => array( + 'deleted', + ), + 'entity_id' => array( + 'entity_id', + ), + 'revision_id' => array( + 'revision_id', + ), + 'language' => array( + 'language', + ), + 'field_private_file_fid' => array( + 'field_private_file_fid', + ), + ), + 'mysql_character_set' => 'utf8', +)); + +$connection->insert('field_data_field_private_file') +->fields(array( + 'entity_type', + 'bundle', + 'deleted', + 'entity_id', + 'revision_id', + 'language', + 'delta', + 'field_private_file_fid', + 'field_private_file_display', + 'field_private_file_description', +)) +->values(array( + 'entity_type' => 'node', + 'bundle' => 'test_content_type', + 'deleted' => '0', + 'entity_id' => '1', + 'revision_id' => '6', + 'language' => 'und', + 'delta' => '0', + 'field_private_file_fid' => '4', + 'field_private_file_display' => '1', + 'field_private_file_description' => '', +)) +->execute(); + $connection->schema()->createTable('field_data_field_tags', array( 'fields' => array( 'entity_type' => array( @@ -7579,6 +7726,140 @@ 'delta' => '0', 'field_phone_value' => '99-99-99-99', )) +->values(array( + 'entity_type' => 'node', + 'bundle' => 'test_content_type', + 'deleted' => '0', + 'entity_id' => '1', + 'revision_id' => '6', + 'language' => 'und', + 'delta' => '0', + 'field_phone_value' => '99-99-99-99', +)) +->execute(); + +$connection->schema()->createTable('field_revision_field_private_file', array( + 'fields' => array( + 'entity_type' => array( + 'type' => 'varchar', + 'not null' => TRUE, + 'length' => '128', + 'default' => '', + ), + 'bundle' => array( + 'type' => 'varchar', + 'not null' => TRUE, + 'length' => '128', + 'default' => '', + ), + 'deleted' => array( + 'type' => 'int', + 'not null' => TRUE, + 'size' => 'tiny', + 'default' => '0', + ), + 'entity_id' => array( + 'type' => 'int', + 'not null' => TRUE, + 'size' => 'normal', + 'unsigned' => TRUE, + ), + 'revision_id' => array( + 'type' => 'int', + 'not null' => TRUE, + 'size' => 'normal', + 'unsigned' => TRUE, + ), + 'language' => array( + 'type' => 'varchar', + 'not null' => TRUE, + 'length' => '32', + 'default' => '', + ), + 'delta' => array( + 'type' => 'int', + 'not null' => TRUE, + 'size' => 'normal', + 'unsigned' => TRUE, + ), + 'field_private_file_fid' => array( + 'type' => 'int', + 'not null' => FALSE, + 'size' => 'normal', + 'unsigned' => TRUE, + ), + 'field_private_file_display' => array( + 'type' => 'int', + 'not null' => TRUE, + 'size' => 'tiny', + 'default' => '1', + 'unsigned' => TRUE, + ), + 'field_private_file_description' => array( + 'type' => 'text', + 'not null' => FALSE, + 'size' => 'normal', + ), + ), + 'primary key' => array( + 'entity_type', + 'entity_id', + 'revision_id', + 'deleted', + 'delta', + 'language', + ), + 'indexes' => array( + 'entity_type' => array( + 'entity_type', + ), + 'bundle' => array( + 'bundle', + ), + 'deleted' => array( + 'deleted', + ), + 'entity_id' => array( + 'entity_id', + ), + 'revision_id' => array( + 'revision_id', + ), + 'language' => array( + 'language', + ), + 'field_private_file_fid' => array( + 'field_private_file_fid', + ), + ), + 'mysql_character_set' => 'utf8', +)); + +$connection->insert('field_revision_field_private_file') +->fields(array( + 'entity_type', + 'bundle', + 'deleted', + 'entity_id', + 'revision_id', + 'language', + 'delta', + 'field_private_file_fid', + 'field_private_file_display', + 'field_private_file_description', +)) +->values(array( + 'entity_type' => 'node', + 'bundle' => 'test_content_type', + 'deleted' => '0', + 'entity_id' => '1', + 'revision_id' => '6', + 'language' => 'und', + 'delta' => '0', + 'field_private_file_fid' => '4', + 'field_private_file_display' => '1', + 'field_private_file_description' => '', +)) ->execute(); $connection->schema()->createTable('field_revision_field_tags', array( @@ -8365,6 +8646,16 @@ 'status' => '1', 'timestamp' => '1421727516', )) +->values(array( + 'fid' => '3', + 'uid' => '1', + 'filename' => 'Babylon5.txt', + 'uri' => 'private://Babylon5.txt', + 'filemime' => 'text/plain', + 'filesize' => '4', + 'status' => '1', + 'timestamp' => '1486104045', +)) ->execute(); $connection->schema()->createTable('file_usage', array( @@ -8424,14 +8715,14 @@ 'module' => 'file', 'type' => 'node', 'id' => '1', - 'count' => '2', + 'count' => '3', )) ->values(array( 'fid' => '2', 'module' => 'file', 'type' => 'node', 'id' => '1', - 'count' => '1', + 'count' => '2', )) ->values(array( 'fid' => '2', @@ -8440,6 +8731,13 @@ 'id' => '2', 'count' => '1', )) +->values(array( + 'fid' => '3', + 'module' => 'file', + 'type' => 'node', + 'id' => '1', + 'count' => '1', +)) ->execute(); $connection->schema()->createTable('filter', array( @@ -43853,7 +44151,7 @@ )) ->values(array( 'name' => 'file_private_path', - 'value' => 's:0:"";', + 'value' => 's:21:"sites/default/private";', )) ->values(array( 'name' => 'file_public_path', diff --git a/core/modules/migrate_drupal_ui/src/Batch/MigrateUpgradeImportBatch.php b/core/modules/migrate_drupal_ui/src/Batch/MigrateUpgradeImportBatch.php index 8d9fd8f..5d60960 100644 --- a/core/modules/migrate_drupal_ui/src/Batch/MigrateUpgradeImportBatch.php +++ b/core/modules/migrate_drupal_ui/src/Batch/MigrateUpgradeImportBatch.php @@ -105,6 +105,7 @@ public static function run($initial_ids, $config, &$context) { if ($definition['destination']['plugin'] === 'entity:file') { // Make sure we have a single trailing slash. $configuration['source']['constants']['source_base_path'] = rtrim($config['source_base_path'], '/') . '/'; + $configuration['source']['constants']['source_private_file_path'] = rtrim($config['source_private_file_path'], '/') . '/'; } /** @var \Drupal\migrate\Plugin\Migration $migration */ diff --git a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php index 6b1fc1b..8e7cb91 100644 --- a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php +++ b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php @@ -242,6 +242,10 @@ class MigrateUpgradeForm extends ConfirmFormBase { 'source_module' => 'file', 'destination_module' => 'file', ], + 'd7_file_private' => [ + 'source_module' => 'file', + 'destination_module' => 'file', + ], 'd6_filter_format' => [ 'source_module' => 'filter', 'destination_module' => 'filter', @@ -426,7 +430,7 @@ class MigrateUpgradeForm extends ConfirmFormBase { 'source_module' => 'simpletest', 'destination_module' => 'simpletest', ], - 'd6_statistics_settings' => [ + 'statistics_settings' => [ 'source_module' => 'statistics', 'destination_module' => 'statistics', ], @@ -862,6 +866,15 @@ public function buildCredentialForm(array $form, FormStateInterface $form_state) $default_options = []; + + $form['version'] = [ + '#type' => 'radios', + '#default_value' => 7, + '#title' => $this->t('Drupal version of the source site'), + '#options' => [6 => $this->t('Drupal 6'), 7 => $this->t('Drupal 7')], + '#required' => TRUE, + ]; + $form['database'] = [ '#type' => 'details', '#title' => $this->t('Source database'), @@ -915,10 +928,47 @@ public function buildCredentialForm(array $form, FormStateInterface $form_state) '#title' => $this->t('Source files'), '#open' => TRUE, ]; - $form['source']['source_base_path'] = [ + $form['source']['d6_source_base_path'] = [ '#type' => 'textfield', '#title' => $this->t('Files directory'), '#description' => $this->t('To import files from your current Drupal site, enter a local file directory containing your site (e.g. /var/www/docroot), or your site address (for example http://example.com).'), + '#states' => [ + 'invisible' => [ + ':input[name="version"]' => ['value' => 7], + ], + 'visible' => [ + ':input[name="version"]' => ['value' => 6], + ], + ], + ]; + + $form['source']['source_base_path'] = [ + '#type' => 'textfield', + '#title' => $this->t('Public files directory'), + '#description' => $this->t('To import public files from your current Drupal site, enter a local file directory containing your site (e.g. /var/www/docroot), or your site address (for example http://example.com).'), + '#states' => [ + 'invisible' => [ + ':input[name="version"]' => ['value' => 6], + ], + 'visible' => [ + ':input[name="version"]' => ['value' => 7], + ], + ], + ]; + + $form['source']['source_private_file_path'] = [ + '#type' => 'textfield', + '#title' => $this->t('Private file directory'), + '#default_value' => '', + '#description' => $this->t('To import private files from your current Drupal site, enter a local file directory containing your site (e.g. /var/www/docroot).'), + '#states' => [ + 'invisible' => [ + ':input[name="version"]' => ['value' => 6], + ], + 'visible' => [ + ':input[name="version"]' => ['value' => 7], + ], + ], ]; $form['actions'] = ['#type' => 'actions']; @@ -969,6 +1019,12 @@ public function validateCredentialForm(array &$form, FormStateInterface $form_st if (!$version) { $form_state->setErrorByName($database['driver'] . '][0', $this->t('Source database does not contain a recognizable Drupal version.')); } + elseif ($version != $form_state->getValue('version')) { + $form_state->setErrorByName($database['driver'] . '][0', $this->t('Source database is Drupal version @version but version @selected was selected.', [ + '@version' => $version, + '@selected' => $form_state->getValue('version'), + ])); + } else { $this->createDatabaseStateSettings($database, $version); $migrations = $this->getMigrations('migrate_drupal_' . $version, $version); @@ -985,7 +1041,10 @@ public function validateCredentialForm(array &$form, FormStateInterface $form_st // Store the retrieved migration IDs in form storage. $form_state->set('migrations', $migration_array); + $form_state->set('version', $form_state->getValue('version')); + $form_state->set('d6_source_base_path', $form_state->getValue('d6_source_base_path')); $form_state->set('source_base_path', $form_state->getValue('source_base_path')); + $form_state->set('source_private_file_path', $form_state->getValue('source_private_file_path')); // Store the retrived system data in form storage. $form_state->set('system_data', $system_data); @@ -1133,7 +1192,13 @@ public function submitConfirmForm(array &$form, FormStateInterface $form_state) $storage = $form_state->getStorage(); $migrations = $storage['migrations']; - $config['source_base_path'] = $storage['source_base_path']; + if ($storage['version'] == '6') { + $config['source_base_path'] = $storage['d6_source_base_path']; + } + else { + $config['source_base_path'] = $storage['source_base_path']; + } + $config['source_private_file_path'] = $storage['source_private_file_path']; $batch = [ 'title' => $this->t('Running upgrade'), 'progress_message' => '', diff --git a/core/modules/migrate_drupal_ui/src/Tests/MigrateUpgradeTestBase.php b/core/modules/migrate_drupal_ui/src/Tests/MigrateUpgradeTestBase.php index 85a9e79..e1a8f67 100644 --- a/core/modules/migrate_drupal_ui/src/Tests/MigrateUpgradeTestBase.php +++ b/core/modules/migrate_drupal_ui/src/Tests/MigrateUpgradeTestBase.php @@ -118,10 +118,16 @@ public function testMigrateUpgrade() { $drivers = drupal_get_database_types(); $form = $drivers[$driver]->getFormOptions($connection_options); $connection_options = array_intersect_key($connection_options, $form + $form['advanced_options']); + $version = $this->getSourceDrupalVersion(); $edit = [ $driver => $connection_options, 'source_base_path' => $this->getSourceBasePath(), + 'source_private_file_path' => $this->getSourcePrivateFilePath(), + 'version' => $version, ]; + if ($version == 6) { + $edit['d6_source_base_path'] = $this->getSourceBasePath(); + } if (count($drivers) !== 1) { $edit['driver'] = $driver; } @@ -187,6 +193,22 @@ public function testMigrateUpgrade() { abstract protected function getSourceBasePath(); /** + * Gets the source base path for the concrete test. + * + * @return string + * The source base path. + */ + abstract protected function getSourcePrivateFilePath(); + + /** + * Gets the source base path for the concrete test. + * + * @return string + * The source base path. + */ + abstract protected function getSourceDrupalVersion(); + + /** * Gets the expected number of entities per entity type after migration. * * @return int[] diff --git a/core/modules/migrate_drupal_ui/src/Tests/d6/MigrateUpgrade6Test.php b/core/modules/migrate_drupal_ui/src/Tests/d6/MigrateUpgrade6Test.php index 404f21b..7b0c846 100644 --- a/core/modules/migrate_drupal_ui/src/Tests/d6/MigrateUpgrade6Test.php +++ b/core/modules/migrate_drupal_ui/src/Tests/d6/MigrateUpgrade6Test.php @@ -32,6 +32,20 @@ protected function getSourceBasePath() { /** * {@inheritdoc} */ + protected function getSourcePrivateFilePath() { + return ''; + } + + /** + * {@inheritdoc} + */ + protected function getSourceDrupalVersion() { + return 6; + } + + /** + * {@inheritdoc} + */ protected function getEntityCounts() { return [ 'block' => 30, diff --git a/core/modules/migrate_drupal_ui/src/Tests/d7/MigrateUpgrade7Test.php b/core/modules/migrate_drupal_ui/src/Tests/d7/MigrateUpgrade7Test.php index 86f1ca9..264bad5 100644 --- a/core/modules/migrate_drupal_ui/src/Tests/d7/MigrateUpgrade7Test.php +++ b/core/modules/migrate_drupal_ui/src/Tests/d7/MigrateUpgrade7Test.php @@ -32,6 +32,20 @@ protected function getSourceBasePath() { /** * {@inheritdoc} */ + protected function getSourcePrivateFilePath() { + return __DIR__ . '/files'; + } + + /** + * {@inheritdoc} + */ + protected function getSourceDrupalVersion() { + return 7; + } + + /** + * {@inheritdoc} + */ protected function getEntityCounts() { return [ 'block' => 25, @@ -43,8 +57,8 @@ protected function getEntityCounts() { 'configurable_language' => 4, 'contact_form' => 3, 'editor' => 2, - 'field_config' => 49, - 'field_storage_config' => 37, + 'field_config' => 50, + 'field_storage_config' => 38, 'file' => 2, 'filter_format' => 7, 'image_style' => 6,