summaryrefslogtreecommitdiff
path: root/modules/simpletest/tests/module_test.module
blob: 97c33305fa52cc81c2e7ef8f9386755fd06dacec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php
// $Id$

/**
 * Implements hook_permission().
 */
function module_test_permission() {
  return array(
    'module_test perm' => t('example perm for module_test module'),
  );
}

/**
 * Implements hook_system_info_alter().
 *
 * Manipulate module dependencies to test dependency chains.
 */
function module_test_system_info_alter(&$info, $file, $type) {
  if (variable_get('dependency_test', FALSE) == 'missing dependency') {
    if ($file->name == 'forum') {
      // Make forum module depend on poll.
      $info['dependencies'][] = 'poll';
    }
    elseif ($file->name == 'poll') {
      // Make poll depend on a made-up module.
      $info['dependencies'][] = 'foo';
    }
  }
  elseif (variable_get('dependency_test', FALSE) == 'dependency') {
    if ($file->name == 'forum') {
      // Make the forum module depend on poll.
      $info['dependencies'][] = 'poll';
    }
    elseif ($file->name == 'poll') {
      // Make poll depend on php module.
      $info['dependencies'][] = 'php';
    }
  }
  elseif (variable_get('dependency_test', FALSE) == 'version dependency') {
    if ($file->name == 'forum') {
      // Make the forum module depend on poll.
      $info['dependencies'][] = 'poll';
    }
    elseif ($file->name == 'poll') {
      // Make poll depend on a specific version of php module.
      $info['dependencies'][] = 'php (1.x)';
    }
    elseif ($file->name == 'php') {
      // Set php module to a version compatible with the above.
      $info['version'] = '7.x-1.0';
    }
  }
  if ($file->name == 'seven' && $type == 'theme') {
    $info['regions']['test_region'] = t('Test region');
  }
}

/**
 * Implements hook_hook_info().
 */
function module_test_hook_info() {
  $hooks['test_hook'] = array(
    'group' => 'file',
  );
  return $hooks;
}

/**
 * Implements hook_menu().
 */
function module_test_menu() {
  $items['module-test/hook-dynamic-loading-invoke'] = array(
    'title' => 'Test hook dynamic loading (invoke)',
    'page callback' => 'module_test_hook_dynamic_loading_invoke',
    'access arguments' => array('access content'),
  );
  $items['module-test/hook-dynamic-loading-invoke-all'] = array(
    'title' => 'Test hook dynamic loading (invoke_all)',
    'page callback' => 'module_test_hook_dynamic_loading_invoke_all',
    'access arguments' => array('access content'),
  );
  return $items;
}

/**
 * Page callback for 'hook dynamic loading' test.
 *
 * If the hook is dynamically loaded correctly, the menu callback should
 * return 'success!'.
 */
function module_test_hook_dynamic_loading_invoke() {
  $result = module_invoke('module_test', 'test_hook');
  return $result['module_test'];
}

/**
 * Page callback for 'hook dynamic loading' test.
 *
 * If the hook is dynamically loaded correctly, the menu callback should
 * return 'success!'.
 */
function module_test_hook_dynamic_loading_invoke_all() {
  $result = module_invoke_all('test_hook');
  return $result['module_test'];
}

/**
 * Implements hook_modules_enabled().
 */
function module_test_modules_enabled($modules) {
  // Record the ordered list of modules that were passed in to this hook so we
  // can check that the modules were enabled in the correct sequence.
  variable_set('test_module_enable_order', $modules);
}

/**
 * Implements hook_modules_disabled().
 */
function module_test_modules_disabled($modules) {
  // Record the ordered list of modules that were passed in to this hook so we
  // can check that the modules were disabled in the correct sequence.
  variable_set('test_module_disable_order', $modules);
}

/**
 * Implements hook_modules_uninstalled().
 */
function module_test_modules_uninstalled($modules) {
  // Record the ordered list of modules that were passed in to this hook so we
  // can check that the modules were uninstalled in the correct sequence.
  variable_set('test_module_uninstall_order', $modules);
}