? .svn
? frameworkpatch
? patch.patch
? php5powah_tests.patch
? prefixing.patch
? simpletest
? simpletest_orig
Index: drupal_test_case.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/simpletest/drupal_test_case.php,v
retrieving revision 1.63
diff -b -u -p -r1.63 drupal_test_case.php
--- drupal_test_case.php	23 Mar 2008 03:35:38 -0000	1.63
+++ drupal_test_case.php	23 Mar 2008 05:47:22 -0000
@@ -357,10 +357,40 @@ class DrupalTestCase extends UnitTestCas
       $this->assertField("pass");
   }
 
+  function setUp() {
+    global $db_prefix, $simpletest_ua_handling;
+    if ($simpletest_ua_handling) {
+      $this->db_prefix_original = $db_prefix;
+      $db_prefix = 'simpletest'. mt_rand(1000, 1000000);
+      include_once './includes/install.inc';
+      drupal_install_system();
+      $module_list = drupal_verify_profile('default', 'en');
+      drupal_install_modules($module_list);
+      $task = 'profile';
+      default_profile_tasks($task, '');
+      menu_rebuild();
+      actions_synchronize();
+      _drupal_flush_css_js();
+      variable_set('install_profile', 'default');
+      variable_set('install_task', 'profile-finished');
+    }
+    parent::setUp();
+  }
+
   /**
    * tearDown implementation, setting back switched modules etc
    */
   function tearDown() {
+    global $db_prefix;
+    if (preg_match('/simpletest\d+/', $db_prefix)) {
+      $schema = drupal_get_schema(NULL, TRUE);
+      $ret = array();
+      foreach ($schema as $name => $table) {
+        db_drop_table($ret, $name);
+      }
+      $db_prefix = $this->db_prefix_original;
+      return;
+    }
     if ($this->_modules != $this->_originalModules) {
       $form_state['values'] = array('status' => $this->_originalModules, 'op' => t('Save configuration'));
       drupal_execute('system_modules', $form_state);
@@ -446,7 +476,7 @@ class DrupalTestCase extends UnitTestCas
    * Also, see the description of $curl_options among the properties.
    */
   protected function curlConnect() {
-    global $base_url;
+    global $base_url, $db_prefix;
     if (!isset($this->ch)) {
       $this->ch = curl_init();
       $curl_options = $this->curl_options + array(
@@ -455,6 +485,9 @@ class DrupalTestCase extends UnitTestCas
         CURLOPT_FOLLOWLOCATION => TRUE,
         CURLOPT_RETURNTRANSFER => TRUE,
       );
+      if (preg_match('/simpletest\d+/', $db_prefix)) {
+        $curl_options[CURLOPT_USERAGENT] = $db_prefix;
+      }
       if (!isset($curl_options[CURLOPT_USERPWD]) && ($auth = variable_get('simpletest_httpauth_username', ''))) {
         if ($pass = variable_get('simpletest_httpauth_pass', '')) {
           $auth .= ':'. $pass;
Index: simpletest.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/simpletest/simpletest.module,v
retrieving revision 1.37
diff -b -u -p -r1.37 simpletest.module
--- simpletest.module	23 Mar 2008 03:35:38 -0000	1.37
+++ simpletest.module	23 Mar 2008 05:47:22 -0000
@@ -83,11 +83,17 @@ function simpletest_load() {
  * Menu callback for both running tests and listing possible tests
  */
 function simpletest_entrypoint() {
+  global $simpletest_ua_handling;
   if (!simpletest_load()) {
      // @TODO - Find a better way for this return.  It is currently needed to show error,
      // and returning true leads to page not found
     return '&nbsp;';
   }
+  if (!$simpletest_ua_handling) {
+    $output = t('Please add the following code to the bottom of settings.php');
+    $output .= '<p><code>if (preg_match("/simpletest\d+/", $_SERVER["HTTP_USER_AGENT"])) $db_prefix = $_SERVER["HTTP_USER_AGENT"]; $GLOBALS["simpletest_ua_handling"] = TRUE;</p></code>';
+    return $output;
+  }
   drupal_add_js(drupal_get_path('module', 'simpletest') .'/simpletest.js', 'module');
   $output = drupal_get_form('simpletest_overview_form');
 
