Fix for Code

  1. /**
  2.  * Test enabling/disabling of optional modules functionality.
  3.  */
  4. class ModuleStatusSwitchingTestCase extends ModuleTestCase {
  5.   public static function getInfo() {
  6.     return array(
  7.       'name' => 'Module status switching',
  8.       'description' => 'Switch the status of all modules between each status',
  9.       'group' => 'Module',
  10.     );
  11.   }
  12.  
  13.   public function testStatusSwitching() {
  14.     $module_data = system_get_module_data();
  15.     $required_modules = drupal_required_modules();
  16.     $uninstall_implementations = module_implements('uninstall', TRUE);
  17.     // this function only tests optional Core modules.
  18.     foreach ($module_data as $name => $module) {
  19.       if (!($module->info['package'] == 'Core') || isset($required_modules[$name])) {
  20.         unset($module_data[$name]);
  21.         unset($uninstall_implementations[$name]);
  22.       }
  23.     }
  24.  
  25.     // Disable and uninstall all modules that are optional,
  26.     // skip this part if only required modules are enabled.
  27.     $enabled_modules = module_list(TRUE, FALSE, TRUE);
  28.     $enabled_modules = array_diff($enabled_modules, $required_modules);
  29.     $uninstall_modules = array_intersect($enabled_modules, $uninstall_implementations)
  30.     if (count($enabled_modules)) {
  31.       $edit = array();
  32.       foreach ($enabled_modules as $module) {
  33.         $edit['modules[Core][' . $module . '][enable]'] = $module;
  34.       }
  35.       $this->drupalPost('admin/config/modules', $edit, t('Save configuration'));
  36.       $this->assertText(t('The configuration options have been saved.'), t('All optional modules have been disabled.'));
  37.       if (count($uninstall_modules)) {
  38.         $edit = array();
  39.         foreach ($uninstall_modules as $module) {
  40.           $edit['uninstall[' . $module . ']'] = $module;
  41.         }
  42.         $this->drupalPost('admin/config/modules/uninstall', $edit, t('Uninstall'));
  43.         $this->drupalPost(NULL, NULL, t('Uninstall'));
  44.         $this->assertText(t('The selected modules have been uninstalled.'), t('All optional modules have been uninstalled.'));
  45.       }
  46.     }
  47.  
  48.     // at this point in the test, we should have only the required modules enabled
  49.     $enabled_modules = module_list(TRUE, FALSE, TRUE);
  50.     $this->assertFalse(array_diff($enabled_modules, $required_modules), t('Only the required modules enabled.'))
  51.   }  
  52. }

Submit Fix

Any tags you'd like to associate with your code, delimitered by commas (example: Views, CCK, Module, etc).
Select the syntax highlighting mode to use.