simpletest.install File Reference

Backport of Drupal 7 simpletest.install with modifications, see BACKPORT.txt. More...

Go to the source code of this file.

Functions

 simpletest_install ()
 Implementation of hook_install().
 simpletest_generate_file ($filename, $width, $lines, $type= 'binary-text')
 Generate test file.
 simpletest_get_file_count ($directory, $filename)
 Get the number of files that have the specified filename base.
 simpletest_uninstall ()
 Implementation of hook_uninstall().
 simpletest_requirements ($phase)
 Check that the cURL extension exists for PHP.
 simpletest_schema ()
 simpletest_update_6000 ()
 Upgrade simpletest 5.x-1.x and 6.x-1.x to 6.x-2.1 release.
 simpletest_update_6001 ()
 Change message field to type text.
 simpletest_update_6002 ()
 Change caller field to function.


Detailed Description

Backport of Drupal 7 simpletest.install with modifications, see BACKPORT.txt.

Copyright 2008-2009 by Jimmy Berry ("boombatower", http://drupal.org/user/214218)

Definition in file simpletest.install.


Function Documentation

simpletest_generate_file ( filename,
width,
lines,
type = 'binary-text' 
)

Generate test file.

Definition at line 58 of file simpletest.install.

References simpletest_get_file_count().

00058                                                                                     {
00059   $size = $width * $lines - $lines;
00060 
00061   // Generate random text
00062   $text = '';
00063   for ($i = 0; $i < $size; $i++) {
00064     switch ($type) {
00065       case 'text':
00066         $text .= chr(rand(32, 126));
00067         break;
00068       case 'binary':
00069         $text .= chr(rand(0, 31));
00070         break;
00071       case 'binary-text':
00072       default:
00073         $text .= rand(0, 1);
00074         break;
00075     }
00076   }
00077   $text = wordwrap($text, $width - 1, "\n", TRUE) ."\n"; // Add \n for symetrical file.
00078 
00079   // Create filename.
00080   $path = file_directory_path() . '/simpletest/';
00081   $count = simpletest_get_file_count($path, $filename);
00082   file_put_contents($path . $filename . '-' . ($count + 1) . '.txt', $text);
00083 }

simpletest_get_file_count ( directory,
filename 
)

Get the number of files that have the specified filename base.

Definition at line 88 of file simpletest.install.

00088                                                           {
00089   $files = scandir($directory);
00090   $count = 0;
00091   foreach ($files as $file) {
00092     if (preg_match('/' . $filename . '.*?/', $file)) {
00093       $count++;
00094     }
00095   }
00096   return $count;
00097 }

simpletest_install (  ) 

Implementation of hook_install().

Definition at line 14 of file simpletest.install.

References simpletest_generate_file(), and simpletest_get_file_count().

00014                               {
00015   drupal_install_schema('simpletest');
00016   // Check for files directory.
00017   $path = file_directory_path() . '/simpletest';
00018   if (file_check_directory($path, FILE_CREATE_DIRECTORY)) {
00019     // Generate binary and text test files.
00020     $generated = FALSE;
00021     if (simpletest_get_file_count($path, 'binary') == 0) {
00022       $lines = array(64, 1024);
00023       foreach ($lines as $line) {
00024         simpletest_generate_file('binary', 64, $line, 'binary');
00025       }
00026       $generated = TRUE;
00027     }
00028 
00029     if (simpletest_get_file_count($path, 'text') == 0) {
00030       $lines = array(16, 256, 1024, 2048, 20480);
00031       foreach ($lines as $line) {
00032         simpletest_generate_file('text', 64, $line);
00033       }
00034       $generated = TRUE;
00035     }
00036 
00037     // Copy other test files for consistency.
00038     $files = file_scan_directory($path, '/(html|image|javascript|php|sql)-.*/');
00039     if (count($files) == 0) {
00040       $original = drupal_get_path('module', 'simpletest') . '/files';
00041       $files = file_scan_directory($original, '/(html|image|javascript|php|sql)-.*/');
00042       foreach ($files as $file) {
00043 //        file_unmanaged_copy($file->filepath, $path);
00044         file_unmanaged_copy($file->filename, $path . '/' . $file->basename);
00045       }
00046       $generated = TRUE;
00047     }
00048 
00049     if ($generated) {
00050       drupal_set_message('Extra test files generated.');
00051     }
00052   }
00053 }

simpletest_requirements ( phase  ) 

Check that the cURL extension exists for PHP.

Definition at line 115 of file simpletest.install.

00115                                          {
00116   $requirements = array();
00117   $t = get_t();
00118 
00119   $has_curl = function_exists('curl_init');
00120   $has_domdocument = class_exists('DOMDocument');
00121 
00122   $requirements['curl'] = array(
00123     'title' => $t('cURL'),
00124     'value' => $has_curl ? $t('Enabled') : $t('Not found'),
00125   );
00126   if (!$has_curl) {
00127     $requirements['curl']['severity'] = REQUIREMENT_ERROR;
00128     $requirements['curl']['description'] = $t('Simpletest 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'));
00129   }
00130 
00131   $requirements['php_domdocument'] = array(
00132     'title' => $t('PHP DOMDocument class'),
00133     'value' => $has_domdocument ? $t('Enabled') : $t('Not found'),
00134   );
00135   if (!$has_domdocument) {
00136     $requirements['php_domdocument']['severity'] = REQUIREMENT_ERROR;
00137     $requirements['php_domdocument']['description'] =t('SimpleTest requires the DOMDocument class to be available. Please check the configure command at the <a href="@link-phpinfo">PHP info page</a>.', array('@link-phpinfo' => url('admin/reports/status/php')));
00138   }
00139 
00140   // Drupal 6.
00141   // Check that the global variable is defined signifying that the code was inserted correctly.
00142   if (isset($GLOBALS['simpletest_installed'])) {
00143      $requirements['simpletest_settings'] = array(
00144       'title' => $t('SimpleTest code addition'),
00145       'value' => t('Found'),
00146       'severity' => REQUIREMENT_OK
00147     );
00148   }
00149   else {
00150     $requirements['simpletest_settings'] = array(
00151       'title' => $t('SimpleTest code addition'),
00152       'value' => t('Not-found'),
00153       'severity' => REQUIREMENT_ERROR,
00154       'description' => $t('SimpleTest could not be installed. Must add code to the %settings file please see
00155                            <a href="@install">INSTALL.txt</a>.',
00156                            array('%settings' => realpath(conf_path() . '/settings.php'),
00157                                  '@install' => url(drupal_get_path('module', 'simpletest') . '/INSTALL.txt')))
00158     );
00159   }
00160 
00161   return $requirements;
00162 }

simpletest_schema (  ) 

Definition at line 164 of file simpletest.install.

00164                              {
00165   $schema['simpletest'] = array(
00166     'description' => 'Stores simpletest messages',
00167     'fields' => array(
00168       'message_id'  => array(
00169         'type' => 'serial',
00170         'not null' => TRUE,
00171         'description' => 'Primary Key: Unique simpletest message ID.',
00172       ),
00173       'test_id' => array(
00174         'type' => 'int',
00175         'not null' => TRUE,
00176         'default' => 0,
00177         'description' => 'Test ID, messages belonging to the same ID are reported together',
00178       ),
00179       'test_class' => array(
00180         'type' => 'varchar',
00181         'length' => 255,
00182         'not null' => TRUE,
00183         'default' => '',
00184         'description' => 'The name of the class that created this message.',
00185       ),
00186       'status' => array(
00187         'type' => 'varchar',
00188         'length' => 9,
00189         'not null' => TRUE,
00190         'default' => '',
00191         'description' => 'Message status. Core understands pass, fail, exception.',
00192       ),
00193       'message' => array(
00194         'type' => 'text',
00195         'not null' => TRUE,
00196         'description' => 'The message itself.',
00197       ),
00198       'message_group' => array(
00199         'type' => 'varchar',
00200         'length' => 255,
00201         'not null' => TRUE,
00202         'default' => '',
00203         'description' => 'The message group this message belongs to. For example: warning, browser, user.',
00204       ),
00205       'function' => array(
00206         'type' => 'varchar',
00207         'length' => 255,
00208         'not null' => TRUE,
00209         'default' => '',
00210         'description' => 'Name of the assertion function or method that created this message.',
00211       ),
00212       'line' => array(
00213         'type' => 'int',
00214         'not null' => TRUE,
00215         'default' => 0,
00216         'description' => 'Line number on which the function is called.',
00217       ),
00218       'file' => array(
00219         'type' => 'varchar',
00220         'length' => 255,
00221         'not null' => TRUE,
00222         'default' => '',
00223         'description' => 'Name of the file where the function is called.',
00224       ),
00225     ),
00226     'primary key' => array('message_id'),
00227     'indexes' => array(
00228       'reporter' => array('test_class', 'message_id'),
00229     ),
00230   );
00231   $schema['simpletest_test_id'] = array(
00232     'description' => 'Stores simpletest test IDs, used to auto-incrament the test ID so that a fresh test ID is used.',
00233     'fields' => array(
00234       'test_id'  => array(
00235         'type' => 'serial',
00236         'not null' => TRUE,
00237         'description' => 'Primary Key: Unique simpletest ID used to group test results together. Each time a set of tests
00238                             are run a new test ID is used.',
00239       ),
00240     ),
00241     'primary key' => array('test_id'),
00242   );
00243   return $schema;
00244 }

simpletest_uninstall (  ) 

Implementation of hook_uninstall().

Definition at line 102 of file simpletest.install.

References simpletest_clean_environment().

00102                                 {
00103   simpletest_clean_environment();
00104 
00105   variable_del('simpletest_httpauth');
00106   variable_del('simpletest_httpauth_username');
00107   variable_del('simpletest_httpauth_pass');
00108   variable_del('simpletest_devel');
00109   drupal_uninstall_schema('simpletest');
00110 }

simpletest_update_6000 (  ) 

Upgrade simpletest 5.x-1.x and 6.x-1.x to 6.x-2.1 release.

Note: This does not fix the update_7000 bug introduced in 6.x-2.1 release.

Definition at line 251 of file simpletest.install.

References simpletest_generate_file(), and simpletest_get_file_count().

00251                                   {
00252   $ret = array();
00253   $schema = array();
00254 
00255   // Check for files directory.
00256   $path = file_directory_path() . '/simpletest';
00257   if (file_check_directory($path, FILE_CREATE_DIRECTORY)) {
00258     // Generate binary and text test files.
00259     $generated = FALSE;
00260     if (simpletest_get_file_count($path, 'binary') == 0) {
00261       $lines = array(64, 1024);
00262       foreach ($lines as $line) {
00263         simpletest_generate_file('binary', 64, $line, 'binary');
00264       }
00265       $generated = TRUE;
00266     }
00267 
00268     if (simpletest_get_file_count($path, 'text') == 0) {
00269       $lines = array(16, 256, 1024, 2048, 20480);
00270       foreach ($lines as $line) {
00271         simpletest_generate_file('text', 64, $line);
00272       }
00273       $generated = TRUE;
00274     }
00275 
00276     // Copy other test files for consistency.
00277     $files = file_scan_directory($path, '(html|image|javascript|php|sql)-.*');
00278     if (count($files) == 0) {
00279       $original = drupal_get_path('module', 'simpletest') . '/files';
00280       $files = file_scan_directory($original, '(html|image|javascript|php|sql)-.*');
00281       foreach ($files as $file) {
00282         file_copy($file->filename, $path . '/' . $file->basename);
00283       }
00284       $generated = TRUE;
00285     }
00286 
00287     if ($generated) {
00288       $ret[] = array('success' => TRUE, 'query' => 'Extra test files generated.');
00289     }
00290   }
00291 
00292   // Install 6.x-2.1 schema.
00293   $schema['simpletest'] = array(
00294     'description' => t('Stores simpletest messages'),
00295     'fields' => array(
00296       'message_id'  => array(
00297         'type' => 'serial',
00298         'not null' => TRUE,
00299         'description' => t('Primary Key: Unique simpletest message ID.'),
00300       ),
00301       'test_id' => array(
00302         'type' => 'int',
00303         'not null' => TRUE,
00304         'default' => 0,
00305         'description' => t('Test ID, messages belonging to the same ID are reported together'),
00306       ),
00307       'test_class' => array(
00308         'type' => 'varchar',
00309         'length' => 255,
00310         'not null' => TRUE,
00311         'default' => '',
00312         'description' => t('The name of the class that created this message.'),
00313       ),
00314       'status' => array(
00315         'type' => 'varchar',
00316         'length' => 9,
00317         'not null' => TRUE,
00318         'default' => '',
00319         'description' => t('Message status. Core understands pass, fail, exception.'),
00320       ),
00321       'message' => array(
00322         'type' => 'varchar',
00323         'length' => 255,
00324         'not null' => TRUE,
00325         'default' => '',
00326         'description' => t('The message itself.'),
00327       ),
00328       'message_group' => array(
00329         'type' => 'varchar',
00330         'length' => 255,
00331         'not null' => TRUE,
00332         'default' => '',
00333         'description' => t('The message group this message belongs to. For example: warning, browser, user.'),
00334       ),
00335       'caller' => array(
00336         'type' => 'varchar',
00337         'length' => 255,
00338         'not null' => TRUE,
00339         'default' => '',
00340         'description' => t('Name of the caller function or method that created this message.'),
00341       ),
00342       'line' => array(
00343         'type' => 'int',
00344         'not null' => TRUE,
00345         'default' => 0,
00346         'description' => t('Line number on which the function is called.'),
00347       ),
00348       'file' => array(
00349         'type' => 'varchar',
00350         'length' => 255,
00351         'not null' => TRUE,
00352         'default' => '',
00353         'description' => t('Name of the file where the function is called.'),
00354       ),
00355     ),
00356     'primary key' => array('message_id'),
00357     'indexes' => array(
00358       'reporter' => array('test_class', 'message_id'),
00359     ),
00360   );
00361   $schema['simpletest_test_id'] = array(
00362     'description' => t('Stores simpletest test IDs, used to auto-incrament the test ID so that a fresh test ID is used.'),
00363     'fields' => array(
00364       'test_id'  => array(
00365         'type' => 'serial',
00366         'not null' => TRUE,
00367         'description' => t('Primary Key: Unique simpletest ID used to group test results together. Each time a set of tests
00368                             are run a new test ID is used.')
00369       )
00370     ),
00371     'primary key' => array('test_id')
00372   );
00373 
00374   // Install non-existent tables.
00375   db_create_table($ret, 'simpletest', $schema['simpletest']);
00376 
00377   // Drop table to make sure field 'test_id' and primary key is fixed (6.x-2.1 bug fixed in 6.x-2.2).
00378   if (db_table_exists('simpletest_test_id')) {
00379     db_drop_table($ret, 'simpletest_test_id');
00380   }
00381   db_create_table($ret, 'simpletest_test_id', $schema['simpletest_test_id']);
00382 
00383   return $ret;
00384 }

simpletest_update_6001 (  ) 

Change message field to type text.

Definition at line 389 of file simpletest.install.

00389                                   {
00390   $ret = array();
00391   $schema = array();
00392 
00393   $schema = array(
00394     'type' => 'text',
00395     'not null' => TRUE
00396   );
00397 
00398   // Clear test results to prevent odd results.
00399   db_query('DELETE FROM {simpletest}');
00400 
00401   db_drop_field($ret, 'simpletest', 'message');
00402   db_add_field($ret, 'simpletest', 'message', $schema);
00403 
00404   return $ret;
00405 }

simpletest_update_6002 (  ) 

Change caller field to function.

Definition at line 410 of file simpletest.install.

00410                                   {
00411   $ret = array();
00412   $schema = array();
00413 
00414   $schema = array(
00415     'type' => 'varchar',
00416     'length' => 255,
00417     'not null' => TRUE,
00418     'default' => ''
00419   );
00420 
00421   // Clear test results to prevent odd results.
00422   db_query('DELETE FROM {simpletest}');
00423 
00424   db_drop_field($ret, 'simpletest', 'caller');
00425   db_add_field($ret, 'simpletest', 'function', $schema);
00426 
00427   return $ret;
00428 }


Generated on Thu May 28 14:44:21 2009 for SimpleTest-D6 by  doxygen 1.5.8