Issue #1874562 by chx, plach: Fixed Upgrade path broken and yet tests pass.
parent
d2527ed4a7
commit
8e102d2a73
|
@ -366,16 +366,15 @@ function file_stream_wrapper_uri_normalize($uri) {
|
|||
* (Drupal\Core\StreamWrapper\PrivateStream).
|
||||
*/
|
||||
function file_stream_wrapper_get_instance_by_uri($uri) {
|
||||
$scheme = file_uri_scheme($uri);
|
||||
$class = file_stream_wrapper_get_class($scheme);
|
||||
if (class_exists($class)) {
|
||||
$instance = new $class();
|
||||
$instance->setUri($uri);
|
||||
return $instance;
|
||||
}
|
||||
else {
|
||||
return FALSE;
|
||||
if ($scheme = file_uri_scheme($uri)) {
|
||||
$class = file_stream_wrapper_get_class($scheme);
|
||||
if (class_exists($class)) {
|
||||
$instance = new $class();
|
||||
$instance->setUri($uri);
|
||||
return $instance;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -856,24 +856,8 @@ abstract class TestBase {
|
|||
file_prepare_directory($this->translation_files_directory, FILE_CREATE_DIRECTORY);
|
||||
$this->generatedTestFiles = FALSE;
|
||||
|
||||
// Create and set new configuration directories. The child site
|
||||
// uses drupal_valid_test_ua() to adjust the config directory paths to
|
||||
// a test-prefix-specific directory within the public files directory.
|
||||
// @see config_get_config_directory()
|
||||
$GLOBALS['config_directories'] = array();
|
||||
$this->configDirectories = array();
|
||||
include_once DRUPAL_ROOT . '/core/includes/install.inc';
|
||||
foreach (array(CONFIG_ACTIVE_DIRECTORY, CONFIG_STAGING_DIRECTORY) as $type) {
|
||||
// Assign the relative path to the global variable.
|
||||
$path = 'simpletest/' . substr($this->databasePrefix, 10) . '/config_' . $type;
|
||||
$GLOBALS['config_directories'][$type]['path'] = $path;
|
||||
// Ensure the directory can be created and is writeable.
|
||||
if (!install_ensure_config_directory($type)) {
|
||||
return FALSE;
|
||||
}
|
||||
// Provide the already resolved path for tests.
|
||||
$this->configDirectories[$type] = $this->originalFileDirectory . '/' . $path;
|
||||
}
|
||||
// Create and set new configuration directories.
|
||||
$this->prepareConfigDirectories();
|
||||
|
||||
// Reset and create a new service container.
|
||||
$this->container = new ContainerBuilder();
|
||||
|
@ -896,6 +880,32 @@ abstract class TestBase {
|
|||
$this->setupEnvironment = TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and set new configuration directories.
|
||||
*
|
||||
* The child site uses drupal_valid_test_ua() to adjust the config directory
|
||||
* paths to a test-prefix-specific directory within the public files
|
||||
* directory.
|
||||
*
|
||||
* @see config_get_config_directory()
|
||||
*/
|
||||
protected function prepareConfigDirectories() {
|
||||
$GLOBALS['config_directories'] = array();
|
||||
$this->configDirectories = array();
|
||||
include_once DRUPAL_ROOT . '/core/includes/install.inc';
|
||||
foreach (array(CONFIG_ACTIVE_DIRECTORY, CONFIG_STAGING_DIRECTORY) as $type) {
|
||||
// Assign the relative path to the global variable.
|
||||
$path = 'simpletest/' . substr($this->databasePrefix, 10) . '/config_' . $type;
|
||||
$GLOBALS['config_directories'][$type]['path'] = $path;
|
||||
// Ensure the directory can be created and is writeable.
|
||||
if (!install_ensure_config_directory($type)) {
|
||||
return FALSE;
|
||||
}
|
||||
// Provide the already resolved path for tests.
|
||||
$this->configDirectories[$type] = $this->originalFileDirectory . '/' . $path;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Rebuild drupal_container().
|
||||
*
|
||||
|
|
|
@ -134,10 +134,17 @@ abstract class UpgradePathTestBase extends WebTestBase {
|
|||
$this->variable_set('site_mail', 'simpletest@example.com');
|
||||
|
||||
drupal_set_time_limit($this->timeLimit);
|
||||
$this->rebuildContainer();
|
||||
$this->setup = TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides \Drupal\simpletest\TestBase::prepareConfigDirectories().
|
||||
*/
|
||||
protected function prepareConfigDirectories() {
|
||||
// The configuration directories are prepared as part of the first access to
|
||||
// update.php.
|
||||
}
|
||||
|
||||
/**
|
||||
* Specialized variable_set() that works even if the child site is not upgraded.
|
||||
*
|
||||
|
@ -175,7 +182,13 @@ abstract class UpgradePathTestBase extends WebTestBase {
|
|||
protected function refreshVariables() {
|
||||
// No operation if the child has not been upgraded yet.
|
||||
if (!$this->upgradedSite) {
|
||||
return parent::refreshVariables();
|
||||
global $conf;
|
||||
cache('bootstrap')->delete('variables');
|
||||
$conf = variable_initialize();
|
||||
$container = drupal_container();
|
||||
if ($container->has('config.factory')) {
|
||||
$container->get('config.factory')->reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -195,6 +208,16 @@ abstract class UpgradePathTestBase extends WebTestBase {
|
|||
throw new Exception('Initial GET to update.php did not return HTTP 200 status.');
|
||||
}
|
||||
|
||||
// Ensure that the first update screen appeared correctly.
|
||||
if (!$this->assertFieldByXPath('//input[@type="submit"]')) {
|
||||
throw new Exception('An error was encountered during the first access to update.php.');
|
||||
}
|
||||
|
||||
// Initialize config directories and rebuild the service container after
|
||||
// creating them in the first step.
|
||||
parent::prepareConfigDirectories();
|
||||
$this->rebuildContainer();
|
||||
|
||||
// Continue.
|
||||
$this->drupalPost(NULL, array(), t('Continue'));
|
||||
if (!$this->assertResponse(200)) {
|
||||
|
|
|
@ -949,7 +949,7 @@ function user_update_8014() {
|
|||
'module' => array(
|
||||
'description' => 'The name of the module declaring the variable.',
|
||||
'type' => 'varchar',
|
||||
'length' => 255,
|
||||
'length' => 204,
|
||||
'not null' => TRUE,
|
||||
'default' => '',
|
||||
),
|
||||
|
|
Loading…
Reference in New Issue