summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDries Buytaert2010-08-22 15:31:18 (GMT)
committerDries Buytaert2010-08-22 15:31:18 (GMT)
commit153ef8bd7b79fa4063a3994cd653721249e9c465 (patch)
treec5eba601e3aab1b62086a7904ed070e26683d5c5
parent260dbda9708a68e83b7ab84e1d947abae123a9d1 (diff)
- Patch #323477 by justinrandell, boombatower, tstoeckler, Damien Tournoud: increase simpletest speed by running on a simplified profile.
-rw-r--r--includes/install.core.inc5
-rw-r--r--includes/install.inc1
-rw-r--r--modules/simpletest/drupal_web_test_case.php25
-rw-r--r--modules/simpletest/tests/database_test.test1
-rw-r--r--profiles/testing/testing.info6
-rw-r--r--profiles/testing/testing.install17
-rw-r--r--profiles/testing/testing.profile3
7 files changed, 51 insertions, 7 deletions
diff --git a/includes/install.core.inc b/includes/install.core.inc
index 443ec8a..5e16023 100644
--- a/includes/install.core.inc
+++ b/includes/install.core.inc
@@ -1111,6 +1111,11 @@ function install_select_profile_form($form, &$form_state, $profile_files) {
include_once DRUPAL_ROOT . '/' . $profile->uri;
$details = install_profile_info($profile->name);
+ // Don't show hidden profiles. This is used by to hide the testing profile,
+ // which only exists to speed up test runs.
+ if ($details['hidden'] === TRUE) {
+ continue;
+ }
$profiles[$profile->name] = $details;
// Determine the name of the profile; default to file name if defined name
diff --git a/includes/install.inc b/includes/install.inc
index 92528d8..e68e272 100644
--- a/includes/install.inc
+++ b/includes/install.inc
@@ -1022,6 +1022,7 @@ function install_profile_info($profile, $locale = 'en') {
'description' => '',
'distribution_name' => 'Drupal',
'version' => NULL,
+ 'hidden' => FALSE,
'php' => DRUPAL_MINIMUM_PHP,
);
$info = drupal_parse_info_file("profiles/$profile/$profile.info") + $defaults;
diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php
index b5babec..739aaa7 100644
--- a/modules/simpletest/drupal_web_test_case.php
+++ b/modules/simpletest/drupal_web_test_case.php
@@ -622,6 +622,13 @@ class DrupalUnitTestCase extends DrupalTestCase {
*/
class DrupalWebTestCase extends DrupalTestCase {
/**
+ * The profile to install as a basis for testing.
+ *
+ * @var string
+ */
+ protected $profile = 'standard';
+
+ /**
* The URL currently loaded in the internal browser.
*
* @var string
@@ -1193,11 +1200,11 @@ class DrupalWebTestCase extends DrupalTestCase {
variable_set('file_private_path', $private_files_directory);
variable_set('file_temporary_path', $temp_files_directory);
- // Include the default profile.
- variable_set('install_profile', 'standard');
- $profile_details = install_profile_info('standard', 'en');
+ // Include the testing profile.
+ variable_set('install_profile', $this->profile);
+ $profile_details = install_profile_info($this->profile, 'en');
- // Install the modules specified by the default profile.
+ // Install the modules specified by the testing profile.
module_enable($profile_details['dependencies'], FALSE);
// Install modules needed for this test. This could have been passed in as
@@ -1212,8 +1219,13 @@ class DrupalWebTestCase extends DrupalTestCase {
module_enable($modules, TRUE);
}
- // Run default profile tasks.
- module_enable(array('standard'), FALSE);
+ // Run the profile tasks.
+ $install_profile_module_exists = db_query("SELECT 1 FROM {system} WHERE type = 'module' AND name = :name", array(
+ ':name' => $this->profile))
+ ->fetchField();
+ if ($install_profile_module_exists) {
+ module_enable(array($this->profile), FALSE);
+ }
// Rebuild caches.
drupal_static_reset();
@@ -3064,7 +3076,6 @@ class DrupalWebTestCase extends DrupalTestCase {
$this->error(l(t('Verbose message'), $url, array('attributes' => array('target' => '_blank'))), 'User notice');
}
}
-
}
/**
diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test
index e7f8128..89b2853 100644
--- a/modules/simpletest/tests/database_test.test
+++ b/modules/simpletest/tests/database_test.test
@@ -17,6 +17,7 @@ class FakeRecord { }
* here.
*/
class DatabaseTestCase extends DrupalWebTestCase {
+ protected $profile = 'testing';
function setUp() {
parent::setUp('database_test');
diff --git a/profiles/testing/testing.info b/profiles/testing/testing.info
new file mode 100644
index 0000000..a82b115
--- /dev/null
+++ b/profiles/testing/testing.info
@@ -0,0 +1,6 @@
+; $Id$
+name = Testing
+description = Totally stripped back testing profile.
+version = VERSION
+core = 7.x
+hidden = TRUE
diff --git a/profiles/testing/testing.install b/profiles/testing/testing.install
new file mode 100644
index 0000000..74a1fff
--- /dev/null
+++ b/profiles/testing/testing.install
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * Implements hook_install().
+ *
+ * Perform actions to set up the site for this profile.
+ */
+function testing_install() {
+
+ // Allow visitor account creation, but with administrative approval.
+ variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL);
+
+ // Enable default permissions for system roles.
+ user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array('access content'));
+ user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array('access content'));
+}
+
diff --git a/profiles/testing/testing.profile b/profiles/testing/testing.profile
new file mode 100644
index 0000000..b02b32d
--- /dev/null
+++ b/profiles/testing/testing.profile
@@ -0,0 +1,3 @@
+<?php
+// $Id$
+