=== modified file 'modules/simpletest/drupal_test_suite.php'
--- modules/simpletest/drupal_test_suite.php	2008-04-20 18:34:43 +0000
+++ modules/simpletest/drupal_test_suite.php	2008-04-22 07:50:45 +0000
@@ -38,14 +38,7 @@ class DrupalTests extends DrupalTestSuit
     /* Tricky part to avoid double inclusion */
     if (!$classes) {
 
-      $files = array();
-      foreach (array_keys(module_rebuild_cache()) as $module) {
-        $module_path = drupal_get_path('module', $module);
-        $test = $module_path . "/$module.test";
-        if (file_exists($test)) {
-          $files[] = $test;
-        }
-      }
+      $files = $this->get_files();
 
       $existing_classes = get_declared_classes();
       foreach ($files as $file) {
@@ -62,10 +55,9 @@ class DrupalTests extends DrupalTestSuit
     }
     $groups = array();
     foreach ($classes as $class) {
-      if (!is_subclass_of($class, 'DrupalWebTestCase') && !is_subclass_of($class, 'DrupalUnitTestCase')) {
-        continue;
+      if ($this->class_ok($class)) {
+        $this->_addClassToGroups($groups, $class);
       }
-      $this->_addClassToGroups($groups, $class);
     }
     foreach ($groups as $group_name => $group) {
       $group_test = &new DrupalTestSuite($group_name);
@@ -99,23 +91,33 @@ class DrupalTests extends DrupalTestSuit
    * @access public
    */
   function run(&$reporter) {
-    cache_clear_all();
     @set_time_limit(0);
     ignore_user_abort(TRUE);
 
+    $this->_cleanup_before_run();
+    $result = parent::run($reporter);
+    return $result;
+  }
+  function get_files() {
+    $files = array();
+    foreach (array_keys(module_rebuild_cache()) as $module) {
+      $module_path = drupal_get_path('module', $module);
+      $test = $module_path . "/$module.test";
+      if (file_exists($test)) {
+        $files[] = $test;
+      }
+    }
+    return $files;
+  }
+  function class_ok($class) {
+    return is_subclass_of($class, 'DrupalWebTestCase');
+  }
+
+  function _cleanup_before_run() {
+    cache_clear_all();
     // Disable devel output, check simpletest settings page
     if (!variable_get('simpletest_devel', FALSE)) {
       $GLOBALS['devel_shutdown'] = FALSE;
     }
-
-    $result = parent::run($reporter);
-
-    // Restores modules
-    foreach ($this->_cleanupModules as $name => $status) {
-      db_query("UPDATE {system} SET status = %d WHERE name = '%s' AND type = 'module'", $status, $name);
-    }
-    $this->_cleanupModules = array();
-
-    return $result;
   }
 }

