Index: modules/simpletest/simpletest.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.pages.inc,v retrieving revision 1.29 diff -u -p -r1.29 simpletest.pages.inc --- modules/simpletest/simpletest.pages.inc 30 Apr 2010 19:12:38 -0000 1.29 +++ modules/simpletest/simpletest.pages.inc 15 May 2010 19:53:07 -0000 @@ -428,6 +428,9 @@ function simpletest_result_status_image( /** * Provides settings form for SimpleTest variables. + * + * @ingroup forms + * @see simpletest_settings_form_validate() */ function simpletest_settings_form($form, &$form_state) { $form['general'] = array( @@ -473,10 +476,28 @@ function simpletest_settings_form($form, '#default_value' => variable_get('simpletest_httpauth_username', ''), ); $form['httpauth']['simpletest_httpauth_password'] = array( - '#type' => 'textfield', + '#type' => 'password', '#title' => t('Password'), - '#default_value' => variable_get('simpletest_httpauth_password', ''), + '#description' => variable_get('simpletest_httpauth_password') ? t('To change the password, enter the new password here.') : NULL, ); return system_settings_form($form); } + +/** + * Validation handler for simpletest_settings_form(). + */ +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', ''); + } + + // If a password was provided but a username wasn't, the credentials are + // incorrect, so throw an error. + if (empty($form_state['values']['simpletest_httpauth_username']) && !empty($form_state['values']['simpletest_httpauth_password'])) { + form_set_error('simpletest_httpauth_username', t('HTTP authentication credentials must include a username in addition to a password.')); + } +} +