#808162 by carlos8f, agentrickard: Fixed update.php fails when optional modules disabled.

merge-requests/26/head
Angie Byron 2010-06-13 18:27:39 +00:00
parent edb84630e8
commit 1ecf2d1326
2 changed files with 27 additions and 2 deletions

View File

@ -364,8 +364,8 @@ function system_requirements($phase) {
if ($phase == 'update') {
$files = system_rebuild_module_data();
foreach ($files as $module => $file) {
// Ignore disabled modules.
if (!$file->status) {
// Ignore disabled modules and install profiles.
if (!$file->status || preg_match('/\.profile$/', $file->filename)) {
continue;
}
// Check the module's PHP version.

View File

@ -1739,6 +1739,31 @@ class UpdateScriptFunctionalTest extends DrupalWebTestCase {
$this->assertResponse(200);
}
/**
* Tests the detection of requirements for the update script to proceed.
*/
function testUpdateRequirements() {
$this->drupalLogin($this->update_user);
$this->drupalGet($this->update_url, array('external' => TRUE));
$this->assertResponse(200);
// Test if disabling a module that another enabled module depends on will
// prevent the update from proceeding.
module_disable(array('block'), FALSE);
$this->assertFalse(module_exists('block'), t('Block module is disabled.'));
$this->assertTrue(module_exists('dashboard'), t('Dashboard module is enabled.'));
$this->drupalGet($this->update_url, array('external' => TRUE));
$this->assertText(t('Unresolved dependency'), t('The update process cannot proceed when a module dependency is not enabled.'));
// Test if modules required by the current install profile are not required
// to be enabled for an update to proceed.
module_enable(array('block'));
$this->assertTrue(module_exists('block'), t('Block module is enabled.'));
module_disable(array('overlay'));
$this->assertFalse(module_exists('overlay'), t('Overlay module is disabled.'));
$this->drupalGet($this->update_url, array('external' => TRUE));
$this->assertNoText(t('Unresolved dependency'), t('The update process can proceed when modules from the install profile are disabled.'));
}
/**
* Tests the effect of using the update script on the theme system.
*/