diff options
Diffstat (limited to 'modules/simpletest/simpletest.install')
-rw-r--r-- | modules/simpletest/simpletest.install | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/modules/simpletest/simpletest.install b/modules/simpletest/simpletest.install new file mode 100644 index 000000000..4287b2a5d --- /dev/null +++ b/modules/simpletest/simpletest.install @@ -0,0 +1,98 @@ +<?php +// $Id$ + +/** + * Implementation of hook_install(). + */ +function simpletest_install() { + // Check for files directory. + $path = file_directory_path() . '/simpletest'; + if (file_check_directory($path, FILE_CREATE_DIRECTORY)) { + // Generate binary and text test files. + $generated = FALSE; + if (simpletest_get_file_count($path, 'binary') == 0) { + $lines = array(64, 1024); + foreach ($lines as $line) { + simpletest_generate_file('binary', 64, $line, 'binary'); + } + $generated = TRUE; + } + + if (simpletest_get_file_count($path, 'text') == 0) { + $lines = array(16, 256, 1024, 2048, 20480); + foreach ($lines as $line) { + simpletest_generate_file('text', 64, $line); + } + $generated = TRUE; + } + + // Copy other test files for consistency. + $files = file_scan_directory($path, '(html|image|javascript|php|sql)-.*'); + if (count($files) == 0) { + $original = drupal_get_path('module', 'simpletest') .'/files'; + $files = file_scan_directory($original, '(html|image|javascript|php|sql)-.*'); + foreach ($files as $file) { + file_copy($file->filename, $path .'/'. $file->basename); + } + $generated = TRUE; + } + + if ($generated) { + drupal_set_message('Extra test files generated.'); + } + } +} + +/** + * Generate test file. + */ +function simpletest_generate_file($filename, $width, $lines, $type = 'binary-text') { + $size = $width * $lines - $lines; + + // Generate random text + $text = ''; + for ($i = 0; $i < $size; $i++) { + switch ($type) { + case 'text': + $text .= chr(rand(32, 126)); + break; + case 'binary': + $text .= chr(rand(0, 31)); + break; + case 'binary-text': + default: + $text .= rand(0, 1); + break; + } + } + $text = wordwrap($text, $width - 1, "\n", TRUE) ."\n"; // Add \n for symetrical file. + + // Create filename. + $path = file_directory_path() . '/simpletest/'; + $count = simpletest_get_file_count($path, $filename); + file_put_contents($path . $filename .'-'. ($count + 1) .'.txt', $text); +} + +/** + * Get the number of files that have the specified filename base. + */ +function simpletest_get_file_count($directory, $filename) { + $files = scandir($directory); + $count = 0; + foreach ($files as $file) { + if (preg_match('/'. $filename .'.*?/', $file)) { + $count++; + } + } + return $count; +} + +/** + * Implementation of hook_uninstall(). + */ +function simpletest_uninstall() { + variable_del('simpletest_httpauth'); + variable_del('simpletest_httpauth_username'); + variable_del('simpletest_httpauth_pass'); + variable_del('simpletest_devel'); +} |