? includes/database/install.inc
? sites/all/modules/cvs
Index: modules/simpletest/simpletest.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.module,v
retrieving revision 1.35
diff -u -p -r1.35 simpletest.module
--- modules/simpletest/simpletest.module	25 Jan 2009 12:19:32 -0000	1.35
+++ modules/simpletest/simpletest.module	12 Feb 2009 18:35:32 -0000
@@ -482,6 +482,19 @@ function simpletest_get_all_tests() {
     foreach ($classes as $key => $class) {
       if (method_exists($class, 'getInfo')) {
         $formatted_classes[$class] = new $class;
+
+        // Check for dependent test modules.
+        $test_info = $formatted_classes[$class]->getInfo();
+        if (isset($test_info['dependencies']) && is_array($test_info['dependencies'])) {
+          foreach($test_info['dependencies'] as $module) {
+            $file = db_query("SELECT filename FROM {system} WHERE type = 'module' AND name = :name", array(':name' => $module))->fetchField();
+            if (!$file || !file_exists($file)) {
+              // Do not show the test if it is missing a dependent module.
+              unset($formatted_classes[$class]);
+              break;
+            }
+          }
+        }
       }
     }
   }
Index: modules/simpletest/simpletest.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.test,v
retrieving revision 1.16
diff -u -p -r1.16 simpletest.test
--- modules/simpletest/simpletest.test	22 Jan 2009 12:46:06 -0000	1.16
+++ modules/simpletest/simpletest.test	12 Feb 2009 18:35:32 -0000
@@ -264,3 +264,21 @@ class SimpleTestFunctionalTest extends D
     return preg_match("/^simpletest\d+/", $_SERVER['HTTP_USER_AGENT']);
   }
 }
+
+/**
+ * Test requiring modules for tests.
+ */
+class SimpleTestMissingDependentModuleUnitTest extends DrupalWebTestCase {
+  function getInfo() {
+    return array(
+      'title' => t('Testing dependent module test'),
+      'description' => t('This test should not load since it requires a module that is not found.'),
+      'group' => t('SimpleTest'),
+      'dependencies' => array('module_that_does_not_exist'),
+    );
+  }
+
+  function testFail() {
+    $this->fail(t('Test with missing dependent module executed.'));
+  }
+}
