diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-05-26 07:31:47 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-05-26 07:31:47 +0000 |
commit | 7d0f0aed7d28123065f0e7c180427ef1e544f5db (patch) | |
tree | 9a60089f6be3c6363e7db3327f75db45b3ddf21d /modules/system/system.test | |
parent | fe0c128c71dc912250947bf90f6225357330c1c3 (diff) | |
download | brdo-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.test | 53 |
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); + + } } /** |