From 490386faceecf8fbcb30633b76cb9b6eb1d5afb1 Mon Sep 17 00:00:00 2001 From: Dries <dries@buytaert.net> Date: Tue, 7 Aug 2012 15:45:30 -0400 Subject: [PATCH] - Patch #1705748 by n3or, no_commit_credit: Convert simpletest settings to configuration system. --- core/includes/common.inc | 2 +- .../simpletest/config/simpletest.settings.yml | 8 +++++ .../lib/Drupal/simpletest/TestBase.php | 15 ++++++--- .../simpletest/Tests/SimpleTestTest.php | 2 +- .../lib/Drupal/simpletest/WebTestBase.php | 6 ++-- core/modules/simpletest/simpletest.install | 22 ++++++++----- core/modules/simpletest/simpletest.module | 4 +-- core/modules/simpletest/simpletest.pages.inc | 31 ++++++++++++++----- 8 files changed, 63 insertions(+), 27 deletions(-) create mode 100644 core/modules/simpletest/config/simpletest.settings.yml diff --git a/core/includes/common.inc b/core/includes/common.inc index 7ba47fba679d..ba508fd31daf 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -5174,7 +5174,7 @@ function drupal_system_listing($mask, $directory, $key = 'name', $min_depth = 1) // distribution we need to include the profile of the parent site (in which // test runs are triggered). if (drupal_valid_test_ua()) { - $testing_profile = variable_get('simpletest_parent_profile', FALSE); + $testing_profile = config('simpletest.settings')->get('parent_profile'); if ($testing_profile && $testing_profile != $profile) { $profiles[] = $testing_profile; } diff --git a/core/modules/simpletest/config/simpletest.settings.yml b/core/modules/simpletest/config/simpletest.settings.yml new file mode 100644 index 000000000000..1fe90563844c --- /dev/null +++ b/core/modules/simpletest/config/simpletest.settings.yml @@ -0,0 +1,8 @@ +clear_results: '1' +httpauth: + method: '1' + password: '' + username: '' +maximum_redirects: '5' +parent_profile: '' +verbose: '1' diff --git a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php index cccd0112f7d7..a9c4c41eb3f7 100644 --- a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php +++ b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php @@ -529,8 +529,10 @@ protected function verbose($message) { * methods during debugging. */ public function run(array $methods = array()) { + $simpletest_config = config('simpletest.settings'); + $class = get_class($this); - if (variable_get('simpletest_verbose', TRUE)) { + if ($simpletest_config->get('verbose')) { // Initialize verbose debugging. $this->verbose = TRUE; $this->verboseDirectory = variable_get('file_public_path', conf_path() . '/files') . '/simpletest/verbose'; @@ -541,13 +543,16 @@ public function run(array $methods = array()) { } // HTTP auth settings (<username>:<password>) for the simpletest browser // when sending requests to the test site. - $this->httpauth_method = variable_get('simpletest_httpauth_method', CURLAUTH_BASIC); - $username = variable_get('simpletest_httpauth_username', NULL); - $password = variable_get('simpletest_httpauth_password', NULL); - if ($username && $password) { + $this->httpauth_method = (int) $simpletest_config->get('httpauth.method'); + $username = $simpletest_config->get('httpauth.username'); + $password = $simpletest_config->get('httpauth.password'); + if (!empty($username) && !empty($password)) { $this->httpauth_credentials = $username . ':' . $password; } + // Maximum redirects setting for the simpletest browser. + $this->maximumRedirects = $simpletest_config->get('maximum_redirects'); + set_error_handler(array($this, 'errorHandler')); // Iterate through all the methods in this class, unless a specific list of // methods to run was passed. diff --git a/core/modules/simpletest/lib/Drupal/simpletest/Tests/SimpleTestTest.php b/core/modules/simpletest/lib/Drupal/simpletest/Tests/SimpleTestTest.php index 938054a75b63..7fddae43bdd2 100644 --- a/core/modules/simpletest/lib/Drupal/simpletest/Tests/SimpleTestTest.php +++ b/core/modules/simpletest/lib/Drupal/simpletest/Tests/SimpleTestTest.php @@ -76,7 +76,7 @@ function testInternalBrowser() { 'name' => $user->name, 'pass' => $user->pass_raw ); - variable_set('simpletest_maximum_redirects', 1); + $this->maximumRedirects = 1; $this->drupalPost('user', $edit, t('Log in'), array( 'query' => array('destination' => 'user/logout'), )); diff --git a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php index ae2626fac01f..9ead9264b139 100644 --- a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php +++ b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php @@ -621,11 +621,11 @@ protected function setUp() { variable_set('file_private_path', $this->private_files_directory); variable_set('file_temporary_path', $this->temp_files_directory); - // Set the 'simpletest_parent_profile' variable to add the parent profile's + // Set 'parent_profile' of simpletest to add the parent profile's // search path to the child site's search paths. // @see drupal_system_listing() // @todo This may need to be primed like 'install_profile' above. - variable_set('simpletest_parent_profile', $this->originalProfile); + config('simpletest.settings')->set('parent_profile', $this->originalProfile)->save(); // Include the testing profile. variable_set('install_profile', $this->profile); @@ -917,7 +917,7 @@ protected function curlExec($curl_options, $redirect = FALSE) { // to prevent fragments being sent to the web server as part // of the request. // TODO: Remove this for Drupal 8, since fixed in curl 7.20.0. - if (in_array($status, array(300, 301, 302, 303, 305, 307)) && $this->redirect_count < variable_get('simpletest_maximum_redirects', 5)) { + if (in_array($status, array(300, 301, 302, 303, 305, 307)) && $this->redirect_count < $this->maximumRedirects) { if ($this->drupalGetHeader('location')) { $this->redirect_count++; $curl_options = array(); diff --git a/core/modules/simpletest/simpletest.install b/core/modules/simpletest/simpletest.install index 23db4dc7f679..821a0db9f3ee 100644 --- a/core/modules/simpletest/simpletest.install +++ b/core/modules/simpletest/simpletest.install @@ -170,13 +170,21 @@ function simpletest_uninstall() { drupal_load('module', 'simpletest'); simpletest_clean_database(); - // Remove settings variables. - variable_del('simpletest_httpauth_method'); - variable_del('simpletest_httpauth_username'); - variable_del('simpletest_httpauth_password'); - variable_del('simpletest_clear_results'); - variable_del('simpletest_verbose'); - // Remove generated files. file_unmanaged_delete_recursive('public://simpletest'); } + +/** + * Move simpletest settings from variables to config. + */ +function simpletest_update_8000() { + update_variables_to_config('simpletest.settings', array( + 'simpletest_clear_results' => 'clear_results', + 'simpletest_httpauth_method' => 'httpauth.method', + 'simpletest_httpauth_password' => 'httpauth.password', + 'simpletest_httpauth_username' => 'httpauth.username', + 'simpletest_maximum_redirects' => 'maximum_redirects', + 'simpletest_parent_profile' => 'parent_profile', + 'simpletest_verbose' => 'verbose', + )); +} diff --git a/core/modules/simpletest/simpletest.module b/core/modules/simpletest/simpletest.module index 413891695fc8..0fd025e32933 100644 --- a/core/modules/simpletest/simpletest.module +++ b/core/modules/simpletest/simpletest.module @@ -460,7 +460,7 @@ function simpletest_generate_file($filename, $width, $lines, $type = 'binary-tex function simpletest_clean_environment() { simpletest_clean_database(); simpletest_clean_temporary_directories(); - if (variable_get('simpletest_clear_results', TRUE)) { + if (config('simpletest.settings')->get('clear_results')) { $count = simpletest_clean_results_table(); drupal_set_message(format_plural($count, 'Removed 1 test result.', 'Removed @count test results.')); } @@ -530,7 +530,7 @@ function simpletest_clean_temporary_directories() { * The number of results removed. */ function simpletest_clean_results_table($test_id = NULL) { - if (variable_get('simpletest_clear_results', TRUE)) { + if (config('simpletest.settings')->get('clear_results')) { if ($test_id) { $count = db_query('SELECT COUNT(test_id) FROM {simpletest_test_id} WHERE test_id = :test_id', array(':test_id' => $test_id))->fetchField(); diff --git a/core/modules/simpletest/simpletest.pages.inc b/core/modules/simpletest/simpletest.pages.inc index a98b445548d6..8b8ee74a4c47 100644 --- a/core/modules/simpletest/simpletest.pages.inc +++ b/core/modules/simpletest/simpletest.pages.inc @@ -434,8 +434,10 @@ function simpletest_result_status_image($status) { * * @ingroup forms * @see simpletest_settings_form_validate() + * @see simpletest_settings_form_submit() */ function simpletest_settings_form($form, &$form_state) { + $config = config('simpletest.settings'); $form['general'] = array( '#type' => 'fieldset', '#title' => t('General'), @@ -444,13 +446,13 @@ function simpletest_settings_form($form, &$form_state) { '#type' => 'checkbox', '#title' => t('Clear results after each complete test suite run'), '#description' => t('By default SimpleTest will clear the results after they have been viewed on the results page, but in some cases it may be useful to leave the results in the database. The results can then be viewed at <em>admin/config/development/testing/[test_id]</em>. The test ID can be found in the database, simpletest table, or kept track of when viewing the results the first time. Additionally, some modules may provide more analysis or features that require this setting to be disabled.'), - '#default_value' => variable_get('simpletest_clear_results', TRUE), + '#default_value' => $config->get('clear_results'), ); $form['general']['simpletest_verbose'] = array( '#type' => 'checkbox', '#title' => t('Provide verbose information when running tests'), '#description' => t('The verbose data will be printed along with the standard assertions and is useful for debugging. The verbose data will be erased between each test suite run. The verbose data output is very detailed and should only be used when debugging.'), - '#default_value' => variable_get('simpletest_verbose', TRUE), + '#default_value' => $config->get('verbose'), ); $form['httpauth'] = array( @@ -471,16 +473,16 @@ function simpletest_settings_form($form, &$form_state) { CURLAUTH_ANY => t('Any'), CURLAUTH_ANYSAFE => t('Any safe'), ), - '#default_value' => variable_get('simpletest_httpauth_method', CURLAUTH_BASIC), + '#default_value' => $config->get('httpauth.method'), ); - $username = variable_get('simpletest_httpauth_username'); - $password = variable_get('simpletest_httpauth_password'); + $username = $config->get('httpauth.username'); + $password = $config->get('httpauth.password'); $form['httpauth']['simpletest_httpauth_username'] = array( '#type' => 'textfield', '#title' => t('Username'), '#default_value' => $username, ); - if ($username && $password) { + if (!empty($username) && !empty($password)) { $form['httpauth']['simpletest_httpauth_username']['#description'] = t('Leave this blank to delete both the existing username and password.'); } $form['httpauth']['simpletest_httpauth_password'] = array( @@ -491,7 +493,20 @@ function simpletest_settings_form($form, &$form_state) { $form['httpauth']['simpletest_httpauth_password']['#description'] = t('To change the password, enter the new password here.'); } - return system_settings_form($form); + return system_config_form($form, $form_state); +} + +/** + * Form submission handler for simpletest_settings_form(). + */ +function simpletest_settings_form_submit($form, &$form_state) { + config('simpletest.settings') + ->set('clear_results', $form_state['values']['simpletest_clear_results']) + ->set('verbose', $form_state['values']['simpletest_verbose']) + ->set('httpauth.method', $form_state['values']['simpletest_httpauth_method']) + ->set('httpauth.username', $form_state['values']['simpletest_httpauth_username']) + ->set('httpauth.password', $form_state['values']['simpletest_httpauth_password']) + ->save(); } /** @@ -501,7 +516,7 @@ function simpletest_settings_form_validate($form, &$form_state) { // If a username was provided but a password wasn't, preserve the existing // password. if (!empty($form_state['values']['simpletest_httpauth_username']) && empty($form_state['values']['simpletest_httpauth_password'])) { - $form_state['values']['simpletest_httpauth_password'] = variable_get('simpletest_httpauth_password', ''); + $form_state['values']['simpletest_httpauth_password'] = config('simpletest.settings')->get('httpauth.password'); } // If a password was provided but a username wasn't, the credentials are -- GitLab