diff --git a/modules/simpletest/simpletest.module b/modules/simpletest/simpletest.module
index 5476a9795ef22bb74f410d50ceaf75ac146fbe8a..fe31277582639b9df39fc538ce3a23a1fb2aba46 100644
--- a/modules/simpletest/simpletest.module
+++ b/modules/simpletest/simpletest.module
@@ -123,10 +123,7 @@ function simpletest_test_form() {
     }
 
     // Clear test results.
-    if (variable_get('simpletest_clear_results', TRUE)) {
-      db_query('DELETE FROM {simpletest} WHERE test_id = %d', $_SESSION['test_id']);
-      db_query('DELETE FROM {simpletest_test_id} WHERE test_id = %d', $_SESSION['test_id']);
-    }
+    simpletest_clean_results_table($_SESSION['test_id']);
     unset($_SESSION['test_id']);
 
     $all_ok = TRUE;
@@ -515,7 +512,8 @@ function simpletest_categorize_tests($tests) {
 function simpletest_clean_environment() {
   simpletest_clean_database();
   simpletest_clean_temporary_directories();
-  simpletest_clean_results_table();
+  $count = simpletest_clean_results_table();
+  drupal_set_message(t('Removed @count test results.', array('@count' => $count)));
 }
 
 /**
@@ -564,16 +562,34 @@ function simpletest_clean_temporary_directories() {
 }
 
 /**
- * Clear the test results tables.
+ * Clear the test result tables.
+ *
+ * @param $test_id
+ *   Test ID to remove results for, or NULL to remove all results.
+ * @return
+ *   The number of results removed or FALSE.
  */
-function simpletest_clean_results_table() {
+function simpletest_clean_results_table($test_id = NULL) {
   if (variable_get('simpletest_clear_results', TRUE)) {
-    $count = db_result(db_query('SELECT COUNT(test_id) FROM {simpletest_test_id}'));
+    if ($test_id) {
+      $count = db_result(db_query('SELECT COUNT(test_id) FROM {simpletest_test_id} WHERE test_id = :test_id', array(':test_id' => $test_id)));
+
+      db_delete("simpletest")
+        ->condition('test_id', $test_id)
+        ->execute();
+      db_delete("simpletest_test_id")
+        ->condition('test_id', $test_id)
+        ->execute();
+    }
+    else {
+      $count = db_result(db_query('SELECT COUNT(test_id) FROM {simpletest_test_id}'));
 
-    // Clear test results.
-    db_query('DELETE FROM {simpletest}');
-    db_query('DELETE FROM {simpletest_test_id}');
+      // Clear test results.
+      db_delete("simpletest")->execute();
+      db_delete("simpletest_test_id")->execute();
+    }
 
-    drupal_set_message(t('Removed @count test results.', array('@count' => $count)));
+    return $count;
   }
+  return FALSE;
 }
diff --git a/scripts/run-tests.sh b/scripts/run-tests.sh
index f53ad19370c4d62bf78167be4d10cca8392ebd95..c593e7c52fd38192cda1959f3f32ab0363ac9f7f 100755
--- a/scripts/run-tests.sh
+++ b/scripts/run-tests.sh
@@ -81,10 +81,7 @@
 simpletest_script_reporter_display_results();
 
 // Cleanup our test results.
-db_delete("simpletest")
-  ->condition('test_id', $test_id)
-  ->execute();
-
+simpletest_clean_results_table($test_id);
 
 /**
  * Print help text.