1 module.test ModuleUnitTest::testModuleList()

The basic functionality of module_list().

File

core/modules/simpletest/tests/module.test, line 20
Tests for the module API.

Class

ModuleUnitTest
Unit tests for the module API.

Code

function testModuleList() {
  // Build a list of modules, sorted alphabetically.
  $profile_info = install_profile_info('standard', 'en');
  $module_list = $profile_info['dependencies'];

  // Installation profile is a module that is expected to be loaded.
  $module_list[] = 'standard';

  sort($module_list);
  // Compare this list to the one returned by module_list(). We expect them
  // to match, since all default profile modules have a weight equal to 0
  // (except for block.module, which has a lower weight but comes first in
  // the alphabet anyway).
  $this->assertModuleList($module_list, t('Standard profile'));

  // Try to install a new module.
  module_enable(array('dependency_test3'));
  $module_list[] = 'dependency_test3';
  sort($module_list);
  $this->assertModuleList($module_list, t('After adding a module'));

  // Try to mess with the module weights.
  db_update('system')
    ->fields(array('weight' => 20))
    ->condition('name', 'dependency_test3')
    ->condition('type', 'module')
    ->execute();
  // Reset the module list.
  module_list(TRUE);
  // Move test3 to the end of the array.
  unset($module_list[array_search('dependency_test3', $module_list)]);
  $module_list[] = 'dependency_test3';
  $this->assertModuleList($module_list, t('After changing weights'));

  // Test the fixed list feature.
  $fixed_list = array(
    'system' => array('filename' => backdrop_get_path('module', 'system')),
    'menu' => array('filename' => backdrop_get_path('module', 'menu')),
  );
  module_list(FALSE, FALSE, FALSE, $fixed_list);
  $new_module_list = array_combine(array_keys($fixed_list), array_keys($fixed_list));
  $this->assertModuleList($new_module_list, t('When using a fixed list'));

  // Reset the module list.
  module_list(TRUE);
  $this->assertModuleList($module_list, t('After reset'));
}