summaryrefslogtreecommitdiff
path: root/modules/system/system.test
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-05-26 07:31:47 +0000
committerDries Buytaert <dries@buytaert.net>2010-05-26 07:31:47 +0000
commit7d0f0aed7d28123065f0e7c180427ef1e544f5db (patch)
tree9a60089f6be3c6363e7db3327f75db45b3ddf21d /modules/system/system.test
parentfe0c128c71dc912250947bf90f6225357330c1c3 (diff)
downloadbrdo-7d0f0aed7d28123065f0e7c180427ef1e544f5db.tar.gz
brdo-7d0f0aed7d28123065f0e7c180427ef1e544f5db.tar.bz2
- Patch #592800 by cpliakas, Berdir, aufumy: critical bug: dependent modules are still installed when required modules return errors in hook_requirements().
Diffstat (limited to 'modules/system/system.test')
-rw-r--r--modules/system/system.test53
1 files changed, 53 insertions, 0 deletions
diff --git a/modules/system/system.test b/modules/system/system.test
index d94f114a2..b86626453 100644
--- a/modules/system/system.test
+++ b/modules/system/system.test
@@ -170,6 +170,35 @@ class EnableDisableTestCase extends ModuleTestCase {
}
/**
+ * Tests failure of hook_requirements('install').
+ */
+class HookRequirementsTestCase extends ModuleTestCase {
+ public static function getInfo() {
+ return array(
+ 'name' => 'Requirements hook failure',
+ 'description' => "Attempts enabling a module that fails hook_requirements('install').",
+ 'group' => 'Module',
+ );
+ }
+
+ /**
+ * Assert that a module cannot be installed if it fails hook_requirements().
+ */
+ function testHookRequirementsFailure() {
+ $this->assertModules(array('requirements1_test'), FALSE);
+
+ // Attempt to install the requirements1_test module.
+ $edit = array();
+ $edit['modules[Core][requirements1_test][enable]'] = 'requirements1_test';
+ $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+
+ // Makes sure the module was NOT installed.
+ $this->assertText(t('Requirements 1 Test failed requirements'), t('Modules status has been updated.'));
+ $this->assertModules(array('requirements1_test'), FALSE);
+ }
+}
+
+/**
* Test module dependency functionality.
*/
class ModuleDependencyTestCase extends ModuleTestCase {
@@ -232,6 +261,30 @@ class ModuleDependencyTestCase extends ModuleTestCase {
// Verify that the module has been disabled.
$this->assertModules(array('system_dependencies_test'), FALSE);
}
+
+ /**
+ * Tests enabling a module that depends on a module which fails hook_requirements().
+ */
+ function testEnableRequirementsFailureDependency() {
+ $this->assertModules(array('requirements1_test'), FALSE);
+ $this->assertModules(array('requirements2_test'), FALSE);
+
+ // Attempt to install both modules at the same time.
+ $edit = array();
+ $edit['modules[Core][requirements1_test][enable]'] = 'requirements1_test';
+ $edit['modules[Core][requirements2_test][enable]'] = 'requirements2_test';
+ $this->drupalPost('admin/modules', $edit, t('Save configuration'));
+
+ // Makes sure the modules were NOT installed.
+ $this->assertText(t('Requirements 1 Test failed requirements'), t('Modules status has been updated.'));
+ $this->assertModules(array('requirements1_test'), FALSE);
+ $this->assertModules(array('requirements2_test'), FALSE);
+
+ // Makes sure that already enabled modules the failing modules depend on
+ // were not disabled.
+ $this->assertModules(array('comment'), TRUE);
+
+ }
}
/**