summaryrefslogtreecommitdiff
path: root/modules/simpletest/simpletest.install
diff options
context:
space:
mode:
Diffstat (limited to 'modules/simpletest/simpletest.install')
-rw-r--r--modules/simpletest/simpletest.install98
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');
+}