comparison modules/simpletest/simpletest.install @ 0:ff03f76ab3fe

initial version
author danieleb <danielebarchiesi@me.com>
date Wed, 21 Aug 2013 18:51:11 +0100
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:ff03f76ab3fe
1 <?php
2
3 /**
4 * @file
5 * Install, update and uninstall functions for the simpletest module.
6 */
7
8 /**
9 * Minimum value of PHP memory_limit for SimpleTest.
10 */
11 define('SIMPLETEST_MINIMUM_PHP_MEMORY_LIMIT', '64M');
12
13 /**
14 * Implements hook_requirements().
15 */
16 function simpletest_requirements($phase) {
17 $requirements = array();
18 $t = get_t();
19
20 $has_curl = function_exists('curl_init');
21 $has_hash = function_exists('hash_hmac');
22 $has_domdocument = method_exists('DOMDocument', 'loadHTML');
23 $open_basedir = ini_get('open_basedir');
24
25 $requirements['curl'] = array(
26 'title' => $t('cURL'),
27 'value' => $has_curl ? $t('Enabled') : $t('Not found'),
28 );
29 if (!$has_curl) {
30 $requirements['curl']['severity'] = REQUIREMENT_ERROR;
31 $requirements['curl']['description'] = $t('The testing framework could not be installed because the PHP <a href="@curl_url">cURL</a> library is not available.', array('@curl_url' => 'http://php.net/manual/en/curl.setup.php'));
32 }
33 $requirements['hash'] = array(
34 'title' => $t('hash'),
35 'value' => $has_hash ? $t('Enabled') : $t('Not found'),
36 );
37 if (!$has_hash) {
38 $requirements['hash']['severity'] = REQUIREMENT_ERROR;
39 $requirements['hash']['description'] = $t('The testing framework could not be installed because the PHP <a href="@hash_url">hash</a> extension is disabled.', array('@hash_url' => 'http://php.net/manual/en/book.hash.php'));
40 }
41
42 $requirements['php_domdocument'] = array(
43 'title' => $t('PHP DOMDocument class'),
44 'value' => $has_domdocument ? $t('Enabled') : $t('Not found'),
45 );
46 if (!$has_domdocument) {
47 $requirements['php_domdocument']['severity'] = REQUIREMENT_ERROR;
48 $requirements['php_domdocument']['description'] = $t('The testing framework requires the DOMDocument class to be available. Check the configure command at the <a href="@link-phpinfo">PHP info page</a>.', array('@link-phpinfo' => url('admin/reports/status/php')));
49 }
50
51 // SimpleTest currently needs 2 cURL options which are incompatible with
52 // having PHP's open_basedir restriction set.
53 // See http://drupal.org/node/674304.
54 $requirements['php_open_basedir'] = array(
55 'title' => $t('PHP open_basedir restriction'),
56 'value' => $open_basedir ? $t('Enabled') : $t('Disabled'),
57 );
58 if ($open_basedir) {
59 $requirements['php_open_basedir']['severity'] = REQUIREMENT_ERROR;
60 $requirements['php_open_basedir']['description'] = $t('The testing framework requires the PHP <a href="@open_basedir-url">open_basedir</a> restriction to be disabled. Check your webserver configuration or contact your web host.', array('@open_basedir-url' => 'http://php.net/manual/en/ini.core.php#ini.open-basedir'));
61 }
62
63 // Check the current memory limit. If it is set too low, SimpleTest will fail
64 // to load all tests and throw a fatal error.
65 $memory_limit = ini_get('memory_limit');
66 if (!drupal_check_memory_limit(SIMPLETEST_MINIMUM_PHP_MEMORY_LIMIT, $memory_limit)) {
67 $requirements['php_memory_limit']['severity'] = REQUIREMENT_ERROR;
68 $requirements['php_memory_limit']['description'] = $t('The testing framework requires the PHP memory limit to be at least %memory_minimum_limit. The current value is %memory_limit. <a href="@url">Follow these steps to continue</a>.', array('%memory_limit' => $memory_limit, '%memory_minimum_limit' => SIMPLETEST_MINIMUM_PHP_MEMORY_LIMIT, '@url' => 'http://drupal.org/node/207036'));
69 }
70
71 return $requirements;
72 }
73
74 /**
75 * Implements hook_schema().
76 */
77 function simpletest_schema() {
78 $schema['simpletest'] = array(
79 'description' => 'Stores simpletest messages',
80 'fields' => array(
81 'message_id' => array(
82 'type' => 'serial',
83 'not null' => TRUE,
84 'description' => 'Primary Key: Unique simpletest message ID.',
85 ),
86 'test_id' => array(
87 'type' => 'int',
88 'not null' => TRUE,
89 'default' => 0,
90 'description' => 'Test ID, messages belonging to the same ID are reported together',
91 ),
92 'test_class' => array(
93 'type' => 'varchar',
94 'length' => 255,
95 'not null' => TRUE,
96 'default' => '',
97 'description' => 'The name of the class that created this message.',
98 ),
99 'status' => array(
100 'type' => 'varchar',
101 'length' => 9,
102 'not null' => TRUE,
103 'default' => '',
104 'description' => 'Message status. Core understands pass, fail, exception.',
105 ),
106 'message' => array(
107 'type' => 'text',
108 'not null' => TRUE,
109 'description' => 'The message itself.',
110 ),
111 'message_group' => array(
112 'type' => 'varchar',
113 'length' => 255,
114 'not null' => TRUE,
115 'default' => '',
116 'description' => 'The message group this message belongs to. For example: warning, browser, user.',
117 ),
118 'function' => array(
119 'type' => 'varchar',
120 'length' => 255,
121 'not null' => TRUE,
122 'default' => '',
123 'description' => 'Name of the assertion function or method that created this message.',
124 ),
125 'line' => array(
126 'type' => 'int',
127 'not null' => TRUE,
128 'default' => 0,
129 'description' => 'Line number on which the function is called.',
130 ),
131 'file' => array(
132 'type' => 'varchar',
133 'length' => 255,
134 'not null' => TRUE,
135 'default' => '',
136 'description' => 'Name of the file where the function is called.',
137 ),
138 ),
139 'primary key' => array('message_id'),
140 'indexes' => array(
141 'reporter' => array('test_class', 'message_id'),
142 ),
143 );
144 $schema['simpletest_test_id'] = array(
145 'description' => 'Stores simpletest test IDs, used to auto-incrament the test ID so that a fresh test ID is used.',
146 'fields' => array(
147 'test_id' => array(
148 'type' => 'serial',
149 'not null' => TRUE,
150 'description' => 'Primary Key: Unique simpletest ID used to group test results together. Each time a set of tests
151 are run a new test ID is used.',
152 ),
153 'last_prefix' => array(
154 'type' => 'varchar',
155 'length' => 60,
156 'not null' => FALSE,
157 'default' => '',
158 'description' => 'The last database prefix used during testing.',
159 ),
160 ),
161 'primary key' => array('test_id'),
162 );
163 return $schema;
164 }
165
166 /**
167 * Implements hook_uninstall().
168 */
169 function simpletest_uninstall() {
170 drupal_load('module', 'simpletest');
171 simpletest_clean_database();
172
173 // Remove settings variables.
174 variable_del('simpletest_httpauth_method');
175 variable_del('simpletest_httpauth_username');
176 variable_del('simpletest_httpauth_password');
177 variable_del('simpletest_clear_results');
178 variable_del('simpletest_verbose');
179
180 // Remove generated files.
181 file_unmanaged_delete_recursive('public://simpletest');
182 }