Index: modules/simpletest/drupal_web_test_case.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/drupal_web_test_case.php,v
retrieving revision 1.21
diff -u -r1.21 drupal_web_test_case.php
--- modules/simpletest/drupal_web_test_case.php	26 Jun 2008 19:31:31 -0000	1.21
+++ modules/simpletest/drupal_web_test_case.php	26 Jun 2008 23:04:22 -0000
@@ -649,6 +649,43 @@
     $this->original_file_directory = file_directory_path();
     variable_set('file_directory_path', file_directory_path() . '/' . $db_prefix);
     file_check_directory(file_directory_path(), TRUE); // Create the files directory.
+
+    // Add test modules.
+    $info = $this->getInfo();
+    if (isset($info['test_modules'])) {
+      // Clear registry hooks.
+      cache_clear_all('hooks', 'cache_registry');
+
+      // Clear the module implements static cache.
+      module_implements(NULL, NULL, TRUE);
+
+      // Build list to be appended to.
+      $modules = module_list();
+      foreach ($modules as $key => $name) {
+        $modules[$key] = array('name' => $name, 'filename' => drupal_get_filename('module', $name));
+      }
+
+      // Get the test file for test modules.
+      $reflection = new ReflectionClass(get_class($this));
+      $filename = $reflection->getFileName();
+
+      // Get relative path.
+      $filename = str_replace(realpath('./') . '/', '', $filename);
+
+      // Add test modules to modules list.
+      foreach ($info['test_modules'] as $test_module) {
+        $modules[$test_module] = array('name' => $test_module, 'filename' => $filename);
+
+        $module_info = array('name' => $test_module, 'description' => $test_module, 'files' => array());
+        db_query("INSERT INTO {system} (name, info, type, filename, status, throttle, bootstrap)
+                  VALUES ('%s', '%s', '%s', '%s', %d, %d, %d)",
+                  $test_module, serialize($module_info), 'module', $filename, 0, 0, 0);
+      }
+      module_enable($info['test_modules']);
+
+      // Set the modules list.
+      module_list(FALSE, FALSE, FALSE, $modules);
+    }
   }
 
   /**
