/** * Run all tests in this class. * * Regardless of whether $methods are passed or not, only method names * starting with "test" are executed. * * @param $methods * (optional) A list of method names in the test case class to run; e.g., * array('testFoo', 'testBar'). By default, all methods of the class are * taken into account, but it can be useful to only run a few selected test * methods during debugging. */ public function run(array $methods = array()) { $config = config('simpletest.settings'); // Initialize verbose debugging. simpletest_verbose(NULL, config_get('system.core', 'file_public_path'), get_class($this)); // HTTP auth settings (<username>:<password>) for the simpletest browser // when sending requests to the test site. $this->httpauth_method = $config->get('simpletest_method'); $username = $config->get('simpletest_username', NULL); $password = $config->get('simpletest_password', NULL); if (!empty($username) && !empty($password)) { $this->httpauth_credentials = $username . ':' . $password; } set_error_handler(array($this, 'errorHandler')); $class = get_class($this); // Iterate through all the methods in this class, unless a specific list of // methods to run was passed. $class_methods = get_class_methods($class); if ($methods) { $class_methods = array_intersect($class_methods, $methods); } $missing_requirements = $this->checkRequirements(); if (!empty($missing_requirements)) { $missing_requirements_object = new ReflectionObject($this); $caller = array('file' => $missing_requirements_object->getFileName()); foreach ($missing_requirements as $missing_requirement) { BackdropTestCase::insertAssert($this->testId, $class, FALSE, $missing_requirement, 'Requirements check.', $caller); } } else { foreach ($class_methods as $method) { // If the current method starts with "test", run it - it's a test. if (strtolower(substr($method, 0, 4)) == 'test') { // Insert a fail record. This will be deleted on completion to ensure // that testing completed. $method_info = new ReflectionMethod($class, $method); $caller = array('file' => $method_info->getFileName(), 'line' => $method_info->getStartLine(), 'function' => $class . '->' . $method . '()'); $completion_check_id = BackdropTestCase::insertAssert($this->testId, $class, FALSE, t('The test did not complete due to a fatal error.'), 'Completion check', $caller); $this->setUp(); if ($this->setup) { try { $this->{$method}(); // Finish up. } catch (Exception $e) { $this->exceptionHandler($e); } $this->tearDown(); } else { $this->fail(t("The test cannot be executed because it has not been set up properly.")); } // Remove the completion check record. BackdropTestCase::deleteAssert($completion_check_id); } } } // Clear out the error messages and restore error handler. backdrop_get_messages(); restore_error_handler(); }
/** * Run all tests in this class. * * Regardless of whether $methods are passed or not, only method names * starting with "test" are executed. * * @param $methods * (optional) A list of method names in the test case class to run; e.g., * array('testFoo', 'testBar'). By default, all methods of the class are * taken into account, but it can be useful to only run a few selected test * methods during debugging. */ public function run(array $methods = array()) { // Initialize verbose debugging. simpletest_verbose(NULL, variable_get('file_public_path', conf_path() . '/files'), get_class($this)); // 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_credentials = $username . ':' . $password; } set_error_handler(array($this, 'errorHandler')); $class = get_class($this); // Iterate through all the methods in this class, unless a specific list of // methods to run was passed. $class_methods = get_class_methods($class); if ($methods) { $class_methods = array_intersect($class_methods, $methods); } foreach ($class_methods as $method) { // If the current method starts with "test", run it - it's a test. if (strtolower(substr($method, 0, 4)) == 'test') { // Insert a fail record. This will be deleted on completion to ensure // that testing completed. $method_info = new ReflectionMethod($class, $method); $caller = array('file' => $method_info->getFileName(), 'line' => $method_info->getStartLine(), 'function' => $class . '->' . $method . '()'); $completion_check_id = DrupalTestCase::insertAssert($this->testId, $class, FALSE, t('The test did not complete due to a fatal error.'), 'Completion check', $caller); $this->setUp(); try { $this->{$method}(); // Finish up. } catch (Exception $e) { $this->exceptionHandler($e); } $this->tearDown(); // Remove the completion check record. DrupalTestCase::deleteAssert($completion_check_id); } } // Clear out the error messages and restore error handler. drupal_get_messages(); restore_error_handler(); }
/** * Log verbose message in a text file. * * The a link to the vebose message will be placed in the test results via * as a passing assertion with the text '[verbose message]'. * * @param $message * The verbose message to be stored. * @see simpletest_verbose() */ protected function verbose($message) { if ($id = simpletest_verbose($message)) { $this->pass(l(t('Verbose message'), $this->originalFileDirectory . '/simpletest/verbose/' . get_class($this) . '-' . $id . '.html', array('attributes' => array('target' => '_blank'))), 'Debug'); } }
/** * Log verbose message in a text file. * * The a link to the vebose message will be placed in the test results via * as a passing assertion with the text '[verbose message]'. * * @param $message * The verbose message to be stored. * @see simpletest_verbose() */ protected function verbose($message) { if ($id = simpletest_verbose($message)) { $url = file_create_url($this->originalFileDirectory . '/simpletest/verbose/' . get_class($this) . '-' . $id . '.html'); $this->error(l(t('Verbose message'), $url, array('attributes' => array('target' => '_blank'))), 'User notice'); } }
/** * Log verbose message in a text file. * * The a link to the vebose message will be placed in the test results via * as a passing assertion with the text '[verbose message]'. * * @param $message * The verbose message to be stored. * @see simpletest_verbose() */ protected function verbose($message) { if ($id = simpletest_verbose($message)) { $this->pass(l(t('Verbose message'), url($this->originalFileDirectory . '/simpletest/verbose.html', array('fragment' => $id))), 'Debug'); } }