Issue #1477218 by Berdir, Rob Loach: Convert Tracker tests to PSR-0, register PSR-0 test classes.
parent
85a421eb9b
commit
042de88417
|
@ -159,6 +159,7 @@ function simpletest_run_tests($test_list, $reporter = 'drupal') {
|
||||||
* Batch operation callback.
|
* Batch operation callback.
|
||||||
*/
|
*/
|
||||||
function _simpletest_batch_operation($test_list_init, $test_id, &$context) {
|
function _simpletest_batch_operation($test_list_init, $test_id, &$context) {
|
||||||
|
simpletest_classloader_register();
|
||||||
// Get working values.
|
// Get working values.
|
||||||
if (!isset($context['sandbox']['max'])) {
|
if (!isset($context['sandbox']['max'])) {
|
||||||
// First iteration: initialize working values.
|
// First iteration: initialize working values.
|
||||||
|
@ -291,6 +292,9 @@ function simpletest_log_read($test_id, $prefix, $test_class, $during_test = FALS
|
||||||
* a static variable. In order to list tests provided by disabled modules
|
* a static variable. In order to list tests provided by disabled modules
|
||||||
* hook_registry_files_alter() is used to forcefully add them to the registry.
|
* hook_registry_files_alter() is used to forcefully add them to the registry.
|
||||||
*
|
*
|
||||||
|
* PSR-0 classes are found by searching the designated directory for each module
|
||||||
|
* for files matching the PSR-0 standard.
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
* An array of tests keyed with the groups specified in each of the tests
|
* An array of tests keyed with the groups specified in each of the tests
|
||||||
* getInfo() method and then keyed by the test class. An example of the array
|
* getInfo() method and then keyed by the test class. An example of the array
|
||||||
|
@ -311,6 +315,10 @@ function simpletest_test_get_all() {
|
||||||
$groups = &drupal_static(__FUNCTION__);
|
$groups = &drupal_static(__FUNCTION__);
|
||||||
|
|
||||||
if (!$groups) {
|
if (!$groups) {
|
||||||
|
// Make sure that namespaces for disabled modules are registered so that the
|
||||||
|
// checks below will find them.
|
||||||
|
simpletest_classloader_register();
|
||||||
|
|
||||||
// Load test information from cache if available, otherwise retrieve the
|
// Load test information from cache if available, otherwise retrieve the
|
||||||
// information from each tests getInfo() method.
|
// information from each tests getInfo() method.
|
||||||
if ($cache = cache()->get('simpletest')) {
|
if ($cache = cache()->get('simpletest')) {
|
||||||
|
@ -318,8 +326,33 @@ function simpletest_test_get_all() {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Select all clases in files ending with .test.
|
// Select all clases in files ending with .test.
|
||||||
|
// @todo: Remove this once all tests have been ported to PSR-0.
|
||||||
$classes = db_query("SELECT name FROM {registry} WHERE type = :type AND filename LIKE :name", array(':type' => 'class', ':name' => '%.test'))->fetchCol();
|
$classes = db_query("SELECT name FROM {registry} WHERE type = :type AND filename LIKE :name", array(':type' => 'class', ':name' => '%.test'))->fetchCol();
|
||||||
|
|
||||||
|
// Select all PSR-0 classes in the Tests namespace of all modules.
|
||||||
|
$system_list = db_query("SELECT name, filename FROM {system}")->fetchAllKeyed();
|
||||||
|
|
||||||
|
foreach ($system_list as $name => $filename) {
|
||||||
|
// Build directory in which the test files would reside.
|
||||||
|
$tests_dir = DRUPAL_ROOT . '/' . dirname($filename) . '/lib/Drupal/' . $name . '/Tests';
|
||||||
|
// Scan it for test files if it exists.
|
||||||
|
if (is_dir($tests_dir)) {
|
||||||
|
$files = file_scan_directory($tests_dir, '/.*\.php/');
|
||||||
|
if (!empty($files)) {
|
||||||
|
$basedir = DRUPAL_ROOT . '/' . dirname($filename) . '/lib/';
|
||||||
|
foreach ($files as $file) {
|
||||||
|
// Convert the file name into the namespaced class name.
|
||||||
|
$replacements = array(
|
||||||
|
'/' => '\\',
|
||||||
|
$basedir => '',
|
||||||
|
'.php' => '',
|
||||||
|
);
|
||||||
|
$classes[] = strtr($file->uri, $replacements);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Check that each class has a getInfo() method and store the information
|
// Check that each class has a getInfo() method and store the information
|
||||||
// in an array keyed with the group specified in the test information.
|
// in an array keyed with the group specified in the test information.
|
||||||
$groups = array();
|
$groups = array();
|
||||||
|
@ -355,6 +388,19 @@ function simpletest_test_get_all() {
|
||||||
return $groups;
|
return $groups;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers namespaces for disabled modules.
|
||||||
|
*/
|
||||||
|
function simpletest_classloader_register() {
|
||||||
|
// Get the cached test modules list and register a test namespace for each.
|
||||||
|
$disabled_modules = db_query("SELECT name, filename FROM {system} WHERE status = 0")->fetchAllKeyed();
|
||||||
|
if ($disabled_modules) {
|
||||||
|
foreach ($disabled_modules as $name => $filename) {
|
||||||
|
drupal_classloader_register($name, dirname($filename));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements hook_registry_files_alter().
|
* Implements hook_registry_files_alter().
|
||||||
*
|
*
|
||||||
|
|
|
@ -183,6 +183,7 @@ function theme_simpletest_test_table($variables) {
|
||||||
function simpletest_test_form_submit($form, &$form_state) {
|
function simpletest_test_form_submit($form, &$form_state) {
|
||||||
// Get list of tests.
|
// Get list of tests.
|
||||||
$tests_list = array();
|
$tests_list = array();
|
||||||
|
simpletest_classloader_register();
|
||||||
foreach ($form_state['values'] as $class_name => $value) {
|
foreach ($form_state['values'] as $class_name => $value) {
|
||||||
// Since class_exists() will likely trigger an autoload lookup,
|
// Since class_exists() will likely trigger an autoload lookup,
|
||||||
// we do the fast check first.
|
// we do the fast check first.
|
||||||
|
@ -233,6 +234,8 @@ function simpletest_result_form($form, &$form_state, $test_id) {
|
||||||
'#debug' => 0,
|
'#debug' => 0,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
simpletest_classloader_register();
|
||||||
|
|
||||||
// Cycle through each test group.
|
// Cycle through each test group.
|
||||||
$header = array(t('Message'), t('Group'), t('Filename'), t('Line'), t('Function'), array('colspan' => 2, 'data' => t('Status')));
|
$header = array(t('Message'), t('Group'), t('Filename'), t('Line'), t('Function'), array('colspan' => 2, 'data' => t('Status')));
|
||||||
$form['result']['results'] = array();
|
$form['result']['results'] = array();
|
||||||
|
|
|
@ -2,9 +2,13 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file
|
* @file
|
||||||
* Tests for tracker.module.
|
* Definition of Drupal\tracker\Tests\TrackerTest.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
namespace Drupal\tracker\Tests;
|
||||||
|
|
||||||
|
use DrupalWebTestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines a base class for testing tracker.module.
|
* Defines a base class for testing tracker.module.
|
||||||
*/
|
*/
|
|
@ -4,4 +4,3 @@ dependencies[] = comment
|
||||||
package = Core
|
package = Core
|
||||||
version = VERSION
|
version = VERSION
|
||||||
core = 8.x
|
core = 8.x
|
||||||
files[] = tracker.test
|
|
||||||
|
|
|
@ -363,6 +363,8 @@ function simpletest_script_run_one_test($test_id, $test_class) {
|
||||||
// Bootstrap Drupal.
|
// Bootstrap Drupal.
|
||||||
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
|
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
|
||||||
|
|
||||||
|
simpletest_classloader_register();
|
||||||
|
|
||||||
$test = new $test_class($test_id);
|
$test = new $test_class($test_id);
|
||||||
$test->run();
|
$test->run();
|
||||||
$info = $test->getInfo();
|
$info = $test->getInfo();
|
||||||
|
@ -396,7 +398,7 @@ function simpletest_script_command($test_id, $test_class) {
|
||||||
if ($args['color']) {
|
if ($args['color']) {
|
||||||
$command .= ' --color';
|
$command .= ' --color';
|
||||||
}
|
}
|
||||||
$command .= " --php " . escapeshellarg($php) . " --test-id $test_id --execute-test $test_class";
|
$command .= " --php " . escapeshellarg($php) . " --test-id $test_id --execute-test " . escapeshellarg($test_class);
|
||||||
return $command;
|
return $command;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue