Issue #3254726 by longwave, mondrake: Remove SimpleTest support from run-tests.sh, TestDiscovery and TestRunnerKernel
parent
d60ba4d876
commit
fece49c31a
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Drupal\Core\Test\RunTests;
|
||||
|
||||
use Drupal\simpletest\TestBase;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
|
|
@ -24,7 +23,7 @@ class TestFileParser {
|
|||
public function getTestListFromFile($file) {
|
||||
$test_list = $this->parseContents(file_get_contents($file));
|
||||
return array_filter($test_list, function ($class) {
|
||||
return (is_subclass_of($class, TestCase::class) || is_subclass_of($class, TestBase::class));
|
||||
return is_subclass_of($class, TestCase::class);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,11 @@ use Drupal\Component\Utility\NestedArray;
|
|||
use Drupal\Core\Extension\ExtensionDiscovery;
|
||||
use Drupal\Core\Test\Exception\MissingGroupException;
|
||||
use Drupal\TestTools\PhpUnitCompatibility\ClassWriter;
|
||||
use PHPUnit\Util\Test;
|
||||
|
||||
/**
|
||||
* Discovers available tests.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class TestDiscovery {
|
||||
|
||||
|
|
@ -98,8 +99,6 @@ class TestDiscovery {
|
|||
if (!isset($existing["Drupal\\$name\\"])) {
|
||||
$this->classLoader->addPsr4("Drupal\\$name\\", "$base_path/src");
|
||||
}
|
||||
// Add Simpletest test namespace.
|
||||
$this->testNamespaces["Drupal\\$name\\Tests\\"][] = "$base_path/src/Tests";
|
||||
|
||||
// Add PHPUnit test namespaces.
|
||||
$this->testNamespaces["Drupal\\Tests\\$name\\Unit\\"][] = "$base_path/tests/src/Unit";
|
||||
|
|
@ -182,20 +181,6 @@ class TestDiscovery {
|
|||
// abstract class, trait or test fixture.
|
||||
continue;
|
||||
}
|
||||
// Skip this test class if it is a Simpletest-based test and requires
|
||||
// unavailable modules. TestDiscovery should not filter out module
|
||||
// requirements for PHPUnit-based test classes.
|
||||
// @todo Move this behavior to \Drupal\simpletest\TestBase so tests can be
|
||||
// marked as skipped, instead.
|
||||
// @see https://www.drupal.org/node/1273478
|
||||
if ($info['type'] == 'Simpletest') {
|
||||
if (!empty($info['requires']['module'])) {
|
||||
if (array_diff($info['requires']['module'], $this->availableExtensions['module'])) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($info['groups'] as $group) {
|
||||
$list[$group][$classname] = $info;
|
||||
}
|
||||
|
|
@ -322,11 +307,8 @@ class TestDiscovery {
|
|||
* - group: The test's first @group (parsed from PHPDoc annotations).
|
||||
* - groups: All of the test's @group annotations, as an array (parsed from
|
||||
* PHPDoc annotations).
|
||||
* - requires: An associative array containing test requirements parsed from
|
||||
* PHPDoc annotations:
|
||||
* - module: List of Drupal module extension names the test depends on.
|
||||
*
|
||||
* @throws \Drupal\simpletest\Exception\MissingGroupException
|
||||
* @throws \Drupal\Core\Test\Exception\MissingGroupException
|
||||
* If the class does not have a @group annotation.
|
||||
*/
|
||||
public static function getTestInfo($classname, $doc_comment = NULL) {
|
||||
|
|
@ -363,14 +345,7 @@ class TestDiscovery {
|
|||
}
|
||||
$info['group'] = $annotations['group'];
|
||||
$info['groups'] = $annotations['groups'];
|
||||
|
||||
// Sort out PHPUnit-runnable tests by type.
|
||||
if ($testsuite = static::getPhpunitTestSuite($classname)) {
|
||||
$info['type'] = 'PHPUnit-' . $testsuite;
|
||||
}
|
||||
else {
|
||||
$info['type'] = 'Simpletest';
|
||||
}
|
||||
$info['type'] = 'PHPUnit-' . static::getPhpunitTestSuite($classname);
|
||||
|
||||
if (!empty($annotations['coversDefaultClass'])) {
|
||||
$info['description'] = 'Tests ' . $annotations['coversDefaultClass'] . '.';
|
||||
|
|
@ -378,9 +353,6 @@ class TestDiscovery {
|
|||
else {
|
||||
$info['description'] = static::parseTestClassSummary($doc_comment);
|
||||
}
|
||||
if (isset($annotations['dependencies'])) {
|
||||
$info['requires']['module'] = array_map('trim', explode(',', $annotations['dependencies']));
|
||||
}
|
||||
|
||||
return $info;
|
||||
}
|
||||
|
|
@ -414,42 +386,6 @@ class TestDiscovery {
|
|||
return implode(' ', $summary);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses annotations in the phpDoc of a test class.
|
||||
*
|
||||
* @param \ReflectionClass $class
|
||||
* The reflected test class.
|
||||
*
|
||||
* @return array
|
||||
* An associative array that contains all annotations on the test class;
|
||||
* typically including:
|
||||
* - group: A list of @group values.
|
||||
* - requires: An associative array of @requires values; e.g.:
|
||||
* - module: A list of Drupal module dependencies that are required to
|
||||
* exist.
|
||||
*
|
||||
* @see \PHPUnit\Util\Test::parseTestMethodAnnotations()
|
||||
* @see http://phpunit.de/manual/current/en/incomplete-and-skipped-tests.html#incomplete-and-skipped-tests.skipping-tests-using-requires
|
||||
*/
|
||||
public static function parseTestClassAnnotations(\ReflectionClass $class) {
|
||||
$annotations = Test::parseTestMethodAnnotations($class->getName())['class'];
|
||||
|
||||
// @todo Enhance PHPUnit upstream to allow for custom @requires identifiers.
|
||||
// @see \PHPUnit\Util\Test::getRequirements()
|
||||
// @todo Add support for 'PHP', 'OS', 'function', 'extension'.
|
||||
// @see https://www.drupal.org/node/1273478
|
||||
if (isset($annotations['requires'])) {
|
||||
foreach ($annotations['requires'] as $i => $value) {
|
||||
[$type, $value] = explode(' ', $value, 2);
|
||||
if ($type === 'module') {
|
||||
$annotations['requires']['module'][$value] = $value;
|
||||
unset($annotations['requires'][$i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $annotations;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the phpunit testsuite for a given classname, based on namespace.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -4,12 +4,13 @@ namespace Drupal\Core\Test;
|
|||
|
||||
use Drupal\Core\DrupalKernel;
|
||||
use Drupal\Core\Extension\Extension;
|
||||
use Drupal\Core\Extension\ExtensionDiscovery;
|
||||
use Drupal\Core\Site\Settings;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
/**
|
||||
* Kernel for run-tests.sh.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class TestRunnerKernel extends DrupalKernel {
|
||||
|
||||
|
|
@ -40,13 +41,6 @@ class TestRunnerKernel extends DrupalKernel {
|
|||
$this->moduleData = [
|
||||
'system' => new Extension($this->root, 'module', 'core/modules/system/system.info.yml', 'system.module'),
|
||||
];
|
||||
// In order to support Simpletest in Drupal 9 conditionally include the
|
||||
// module.
|
||||
$extensions = (new ExtensionDiscovery($this->root, FALSE, [], 'ignore_site_path_does_not_exist'))->scan('module', FALSE);
|
||||
if (isset($extensions['simpletest'])) {
|
||||
$this->moduleList['simpletest'] = 0;
|
||||
$this->moduleData['simpletest'] = $extensions['simpletest'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@ trait TestSetupTrait {
|
|||
/**
|
||||
* The public file directory for the test environment.
|
||||
*
|
||||
* @see \Drupal\simpletest\TestBase::prepareEnvironment()
|
||||
* @see \Drupal\Tests\BrowserTestBase::prepareEnvironment()
|
||||
*
|
||||
* @var string
|
||||
|
|
@ -59,7 +58,6 @@ trait TestSetupTrait {
|
|||
/**
|
||||
* The private file directory for the test environment.
|
||||
*
|
||||
* @see \Drupal\simpletest\TestBase::prepareEnvironment()
|
||||
* @see \Drupal\Tests\BrowserTestBase::prepareEnvironment()
|
||||
*
|
||||
* @var string
|
||||
|
|
@ -88,7 +86,6 @@ trait TestSetupTrait {
|
|||
* This value has to match the temporary directory created in
|
||||
* install_base_system() for test installs.
|
||||
*
|
||||
* @see \Drupal\simpletest\TestBase::prepareEnvironment()
|
||||
* @see \Drupal\Tests\BrowserTestBase::prepareEnvironment()
|
||||
* @see install_base_system()
|
||||
*
|
||||
|
|
@ -104,7 +101,7 @@ trait TestSetupTrait {
|
|||
protected $testId;
|
||||
|
||||
/**
|
||||
* Returns the database connection to the site running Simpletest.
|
||||
* Returns the database connection to the site under test.
|
||||
*
|
||||
* @return \Drupal\Core\Database\Connection
|
||||
* The database connection to use for inserting assertions.
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ use Drupal\Component\Utility\Html;
|
|||
use Drupal\Component\Utility\Timer;
|
||||
use Drupal\Core\Composer\Composer;
|
||||
use Drupal\Core\Database\Database;
|
||||
use Drupal\Core\File\Exception\FileException;
|
||||
use Drupal\Core\Test\EnvironmentCleaner;
|
||||
use Drupal\Core\Test\PhpUnitTestRunner;
|
||||
use Drupal\Core\Test\RunTests\TestFileParser;
|
||||
|
|
@ -22,7 +21,6 @@ use Drupal\TestTools\PhpUnitCompatibility\ClassWriter;
|
|||
use PHPUnit\Framework\TestCase;
|
||||
use PHPUnit\Runner\Version;
|
||||
use Symfony\Component\Console\Output\ConsoleOutput;
|
||||
use Symfony\Component\Filesystem\Filesystem as SymfonyFilesystem;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
// Define some colors for display.
|
||||
|
|
@ -242,7 +240,7 @@ All arguments are long options.
|
|||
|
||||
--sqlite A pathname to use for the SQLite database of the test runner.
|
||||
Required unless this script is executed with a working Drupal
|
||||
installation that has Simpletest module installed.
|
||||
installation.
|
||||
A relative pathname is interpreted relative to the Drupal root
|
||||
directory.
|
||||
Note that ':memory:' cannot be used, because this script spawns
|
||||
|
|
@ -288,7 +286,7 @@ All arguments are long options.
|
|||
|
||||
Runs just tests from the specified test type, for example
|
||||
run-tests.sh
|
||||
(i.e. --types "Simpletest,PHPUnit-Functional")
|
||||
(i.e. --types "PHPUnit-Unit,PHPUnit-Kernel")
|
||||
|
||||
--directory Run all tests found within the specified file directory.
|
||||
|
||||
|
|
@ -345,9 +343,8 @@ sudo -u [wwwrun|www-data|etc] php ./core/scripts/{$args['script']}
|
|||
sudo -u [wwwrun|www-data|etc] php ./core/scripts/{$args['script']}
|
||||
--url http://example.com/ --class "Drupal\block\Tests\BlockTest"
|
||||
|
||||
Without a preinstalled Drupal site and enabled Simpletest module, specify a
|
||||
SQLite database pathname to create and the default database connection info to
|
||||
use in tests:
|
||||
Without a preinstalled Drupal site, specify a SQLite database pathname to create
|
||||
and the default database connection info to use in tests:
|
||||
|
||||
sudo -u [wwwrun|www-data|etc] php ./core/scripts/{$args['script']}
|
||||
--sqlite /tmpfs/drupal/test.sqlite
|
||||
|
|
@ -626,9 +623,8 @@ function simpletest_script_setup_database($new = FALSE) {
|
|||
}
|
||||
Database::addConnectionInfo('default', 'default', $databases['default']['default']);
|
||||
|
||||
// If no --sqlite parameter has been passed, then Simpletest module is assumed
|
||||
// to be installed, so the test runner database connection is the default
|
||||
// database connection.
|
||||
// If no --sqlite parameter has been passed, then the test runner database
|
||||
// connection is the default database connection.
|
||||
if (empty($args['sqlite'])) {
|
||||
$sqlite = FALSE;
|
||||
$databases['test-runner']['default'] = $databases['default']['default'];
|
||||
|
|
@ -684,10 +680,10 @@ function simpletest_script_setup_database($new = FALSE) {
|
|||
}
|
||||
}
|
||||
}
|
||||
// Verify that the Simpletest database schema exists by checking one table.
|
||||
// Verify that the test result database schema exists by checking one table.
|
||||
try {
|
||||
if (!$schema->tableExists('simpletest')) {
|
||||
simpletest_script_print_error('Missing Simpletest database schema. Either install Simpletest module or use the --sqlite parameter.');
|
||||
simpletest_script_print_error('Missing test result database schema. Use the --sqlite parameter.');
|
||||
exit(SIMPLETEST_SCRIPT_EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
|
@ -780,10 +776,6 @@ function simpletest_script_execute_batch($test_classes) {
|
|||
$args['repeat'] = -1;
|
||||
}
|
||||
}
|
||||
// Free-up space by removing any potentially created resources.
|
||||
if (!$args['keep-results']) {
|
||||
simpletest_script_cleanup($child['test_id'], $child['class'], $status['exitcode']);
|
||||
}
|
||||
|
||||
// Remove this child.
|
||||
unset($children[$cid]);
|
||||
|
|
@ -820,47 +812,10 @@ function simpletest_script_run_one_test($test_id, $test_class) {
|
|||
global $args;
|
||||
|
||||
try {
|
||||
// Default to status = success. This could mean that we didn't discover any
|
||||
// tests and that none ran.
|
||||
$status = SIMPLETEST_SCRIPT_EXIT_SUCCESS;
|
||||
if (strpos($test_class, '::') > 0) {
|
||||
[$class_name, $method] = explode('::', $test_class, 2);
|
||||
$methods = [$method];
|
||||
}
|
||||
else {
|
||||
$class_name = $test_class;
|
||||
// Use empty array to run all the test methods.
|
||||
$methods = [];
|
||||
}
|
||||
$test = new $class_name($test_id);
|
||||
if ($args['suppress-deprecations']) {
|
||||
putenv('SYMFONY_DEPRECATIONS_HELPER=disabled');
|
||||
}
|
||||
if (is_subclass_of($test_class, TestCase::class)) {
|
||||
$status = simpletest_script_run_phpunit($test_id, $test_class);
|
||||
}
|
||||
// If we aren't running a PHPUnit-based test, then we might have a
|
||||
// Simpletest-based one. Ensure that: 1) The simpletest framework exists,
|
||||
// and 2) that our test belongs to that framework.
|
||||
elseif (class_exists('Drupal\simpletest\TestBase') && is_subclass_of($test_class, 'Drupal\simpletest\TestBase')) {
|
||||
$test->dieOnFail = (bool) $args['die-on-fail'];
|
||||
$test->verbose = (bool) $args['verbose'];
|
||||
$test->run($methods);
|
||||
simpletest_script_reporter_display_summary($test_class, $test->results);
|
||||
|
||||
$status = SIMPLETEST_SCRIPT_EXIT_SUCCESS;
|
||||
// Finished, kill this runner.
|
||||
if ($test->results['#fail'] || $test->results['#exception']) {
|
||||
$status = SIMPLETEST_SCRIPT_EXIT_FAILURE;
|
||||
}
|
||||
}
|
||||
// If the test is not a PHPUnit test, and either we don't have the
|
||||
// Simpletest module or the \Drupal\simpletest\TestBase class available.
|
||||
else {
|
||||
simpletest_script_print_error(sprintf('Can not run %s. If this is a WebTestBase test the simpletest module must be installed. See https://www.drupal.org/node/3030340', $test_class));
|
||||
$status = SIMPLETEST_SCRIPT_EXIT_FAILURE;
|
||||
}
|
||||
|
||||
$status = simpletest_script_run_phpunit($test_id, $test_class);
|
||||
exit($status);
|
||||
}
|
||||
// DrupalTestCase::run() catches exceptions already, so this is only reached
|
||||
|
|
@ -905,112 +860,6 @@ function simpletest_script_command($test_id, $test_class) {
|
|||
return $command;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all remnants of a test runner.
|
||||
*
|
||||
* In case a fatal error occurs after the test site has been fully setup and
|
||||
* the error happens in many tests, the environment that executes the tests can
|
||||
* easily run out of memory or disk space. This function ensures that all
|
||||
* created resources are properly cleaned up after every executed test.
|
||||
*
|
||||
* This clean-up only exists in this script, since SimpleTest module itself does
|
||||
* not use isolated sub-processes for each test being run, so a fatal error
|
||||
* halts not only the test, but also the test runner (i.e., the parent site).
|
||||
*
|
||||
* @param int $test_id
|
||||
* The test ID of the test run.
|
||||
* @param string $test_class
|
||||
* The class name of the test run.
|
||||
* @param int $exitcode
|
||||
* The exit code of the test runner.
|
||||
*
|
||||
* @see simpletest_script_run_one_test()
|
||||
*/
|
||||
function simpletest_script_cleanup($test_id, $test_class, $exitcode) {
|
||||
if (is_subclass_of($test_class, TestCase::class)) {
|
||||
// PHPUnit test, move on.
|
||||
return;
|
||||
}
|
||||
// Retrieve the last database prefix used for testing.
|
||||
try {
|
||||
$last_test = TestDatabase::lastTestGet($test_id);
|
||||
$db_prefix = $last_test['last_prefix'];
|
||||
}
|
||||
catch (Exception $e) {
|
||||
echo (string) $e;
|
||||
exit(SIMPLETEST_SCRIPT_EXIT_EXCEPTION);
|
||||
}
|
||||
|
||||
// If no database prefix was found, then the test was not set up correctly.
|
||||
if (empty($db_prefix)) {
|
||||
echo "\nFATAL $test_class: Found no database prefix for test ID $test_id. (Check whether setUp() is invoked correctly.)";
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not output verbose cleanup messages in case of a positive exitcode.
|
||||
$output = !empty($exitcode);
|
||||
$messages = [];
|
||||
|
||||
$messages[] = "- Found database prefix '$db_prefix' for test ID $test_id.";
|
||||
|
||||
// Read the log file in case any fatal errors caused the test to crash.
|
||||
try {
|
||||
(new TestDatabase($db_prefix))->logRead($test_id, $last_test['test_class']);
|
||||
}
|
||||
catch (Exception $e) {
|
||||
echo (string) $e;
|
||||
exit(SIMPLETEST_SCRIPT_EXIT_EXCEPTION);
|
||||
}
|
||||
|
||||
// Check whether a test site directory was setup already.
|
||||
// @see \Drupal\simpletest\TestBase::prepareEnvironment()
|
||||
$test_db = new TestDatabase($db_prefix);
|
||||
$test_directory = DRUPAL_ROOT . '/' . $test_db->getTestSitePath();
|
||||
if (is_dir($test_directory)) {
|
||||
// Output the error_log.
|
||||
if (is_file($test_directory . '/error.log')) {
|
||||
if ($errors = file_get_contents($test_directory . '/error.log')) {
|
||||
$output = TRUE;
|
||||
$messages[] = $errors;
|
||||
}
|
||||
}
|
||||
// Delete the test site directory.
|
||||
// simpletest_clean_temporary_directories() cannot be used here, since it
|
||||
// would also delete file directories of other tests that are potentially
|
||||
// running concurrently.
|
||||
try {
|
||||
\Drupal::service('file_system')->deleteRecursive($test_directory, ['\Drupal\Tests\BrowserTestBase', 'filePreDeleteCallback']);
|
||||
$messages[] = "- Removed test site directory.";
|
||||
}
|
||||
catch (FileException $e) {
|
||||
// Ignore failed deletes.
|
||||
}
|
||||
}
|
||||
|
||||
// Clear out all database tables from the test.
|
||||
try {
|
||||
$schema = Database::getConnection('default', 'default')->schema();
|
||||
$count = 0;
|
||||
foreach ($schema->findTables($db_prefix . '%') as $table) {
|
||||
$schema->dropTable($table);
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
catch (Exception $e) {
|
||||
echo (string) $e;
|
||||
exit(SIMPLETEST_SCRIPT_EXIT_EXCEPTION);
|
||||
}
|
||||
|
||||
if ($count) {
|
||||
$messages[] = "- Removed $count leftover tables.";
|
||||
}
|
||||
|
||||
if ($output) {
|
||||
echo implode("\n", $messages);
|
||||
echo "\n";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get list of tests based on arguments.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -84,46 +84,23 @@ class TestDiscoveryTest extends UnitTestCase {
|
|||
'\Drupal\Tests\file\Kernel\FileItemValidationTest',
|
||||
];
|
||||
|
||||
// Simpletest classes can not be autoloaded in a PHPUnit test, therefore
|
||||
// provide a docblock.
|
||||
$tests[] = [
|
||||
// Expected result.
|
||||
[
|
||||
'name' => 'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
'group' => 'simpletest',
|
||||
'groups' => ['simpletest'],
|
||||
'description' => 'Tests the Simpletest UI internal browser.',
|
||||
'type' => 'Simpletest',
|
||||
],
|
||||
// Classname.
|
||||
'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
// Doc block.
|
||||
"/**
|
||||
* Tests the Simpletest UI internal browser.
|
||||
*
|
||||
* @group simpletest
|
||||
*/
|
||||
",
|
||||
];
|
||||
|
||||
// Test with a different amount of leading spaces.
|
||||
$tests[] = [
|
||||
// Expected result.
|
||||
[
|
||||
'name' => 'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
'group' => 'simpletest',
|
||||
'groups' => ['simpletest'],
|
||||
'description' => 'Tests the Simpletest UI internal browser.',
|
||||
'type' => 'Simpletest',
|
||||
'name' => 'Drupal\Tests\ExampleSimpleTest',
|
||||
'group' => 'test',
|
||||
'groups' => ['test'],
|
||||
'description' => 'Example test.',
|
||||
'type' => 'PHPUnit-Unit',
|
||||
],
|
||||
// Classname.
|
||||
'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
'Drupal\Tests\ExampleSimpleTest',
|
||||
// Doc block.
|
||||
"/**
|
||||
* Tests the Simpletest UI internal browser.
|
||||
* Example test.
|
||||
*
|
||||
* @group simpletest
|
||||
*/
|
||||
* @group test
|
||||
*/
|
||||
",
|
||||
];
|
||||
|
|
@ -133,19 +110,19 @@ class TestDiscoveryTest extends UnitTestCase {
|
|||
$tests[] = [
|
||||
// Expected result.
|
||||
[
|
||||
'name' => 'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
'group' => 'simpletest',
|
||||
'groups' => ['simpletest'],
|
||||
'description' => 'Tests the Simpletest UI internal browser. * @',
|
||||
'type' => 'Simpletest',
|
||||
'name' => 'Drupal\Tests\ExampleSimpleTest',
|
||||
'group' => 'test',
|
||||
'groups' => ['test'],
|
||||
'description' => 'Example test. * @',
|
||||
'type' => 'PHPUnit-Unit',
|
||||
],
|
||||
// Classname.
|
||||
'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
'Drupal\Tests\ExampleSimpleTest',
|
||||
// Doc block.
|
||||
"/**
|
||||
* Tests the Simpletest UI internal browser. * @
|
||||
* Example test. * @
|
||||
*
|
||||
* @group simpletest
|
||||
* @group test
|
||||
*/
|
||||
",
|
||||
];
|
||||
|
|
@ -154,20 +131,20 @@ class TestDiscoveryTest extends UnitTestCase {
|
|||
$tests[] = [
|
||||
// Expected result.
|
||||
[
|
||||
'name' => 'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
'group' => 'Test',
|
||||
'groups' => ['Test', 'simpletest'],
|
||||
'description' => 'Tests the Simpletest UI internal browser.',
|
||||
'type' => 'Simpletest',
|
||||
'name' => 'Drupal\Tests\ExampleSimpleTest',
|
||||
'group' => 'test1',
|
||||
'groups' => ['test1', 'test2'],
|
||||
'description' => 'Example test.',
|
||||
'type' => 'PHPUnit-Unit',
|
||||
],
|
||||
// Classname.
|
||||
'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
'Drupal\Tests\ExampleSimpleTest',
|
||||
// Doc block.
|
||||
"/**
|
||||
* Tests the Simpletest UI internal browser.
|
||||
* Example test.
|
||||
*
|
||||
* @group Test
|
||||
* @group simpletest
|
||||
* @group test1
|
||||
* @group test2
|
||||
*/
|
||||
",
|
||||
];
|
||||
|
|
@ -176,20 +153,20 @@ class TestDiscoveryTest extends UnitTestCase {
|
|||
$tests['many-group-annotations'] = [
|
||||
// Expected result.
|
||||
[
|
||||
'name' => 'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
'group' => 'Test',
|
||||
'groups' => ['Test', 'simpletest', 'another', 'more', 'many', 'enough', 'whoa'],
|
||||
'description' => 'Tests the Simpletest UI internal browser.',
|
||||
'type' => 'Simpletest',
|
||||
'name' => 'Drupal\Tests\ExampleSimpleTest',
|
||||
'group' => 'test1',
|
||||
'groups' => ['test1', 'test2', 'another', 'more', 'many', 'enough', 'whoa'],
|
||||
'description' => 'Example test.',
|
||||
'type' => 'PHPUnit-Unit',
|
||||
],
|
||||
// Classname.
|
||||
'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
'Drupal\Tests\ExampleSimpleTest',
|
||||
// Doc block.
|
||||
"/**
|
||||
* Tests the Simpletest UI internal browser.
|
||||
* Example test.
|
||||
*
|
||||
* @group Test
|
||||
* @group simpletest
|
||||
* @group test1
|
||||
* @group test2
|
||||
* @group another
|
||||
* @group more
|
||||
* @group many
|
||||
|
|
@ -199,70 +176,24 @@ class TestDiscoveryTest extends UnitTestCase {
|
|||
",
|
||||
];
|
||||
|
||||
// @dependencies annotation.
|
||||
$tests[] = [
|
||||
// Expected result.
|
||||
[
|
||||
'name' => 'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
'description' => 'Tests the Simpletest UI internal browser.',
|
||||
'type' => 'Simpletest',
|
||||
'requires' => ['module' => ['test']],
|
||||
'group' => 'simpletest',
|
||||
'groups' => ['simpletest'],
|
||||
],
|
||||
// Classname.
|
||||
'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
// Doc block.
|
||||
"/**
|
||||
* Tests the Simpletest UI internal browser.
|
||||
*
|
||||
* @dependencies test
|
||||
* @group simpletest
|
||||
*/
|
||||
",
|
||||
];
|
||||
|
||||
// Multiple @dependencies annotation.
|
||||
$tests[] = [
|
||||
// Expected result.
|
||||
[
|
||||
'name' => 'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
'description' => 'Tests the Simpletest UI internal browser.',
|
||||
'type' => 'Simpletest',
|
||||
'requires' => ['module' => ['test', 'test1', 'test2']],
|
||||
'group' => 'simpletest',
|
||||
'groups' => ['simpletest'],
|
||||
],
|
||||
// Classname.
|
||||
'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
// Doc block.
|
||||
"/**
|
||||
* Tests the Simpletest UI internal browser.
|
||||
*
|
||||
* @dependencies test, test1, test2
|
||||
* @group simpletest
|
||||
*/
|
||||
",
|
||||
];
|
||||
|
||||
// Multi-line summary line.
|
||||
$tests[] = [
|
||||
// Expected result.
|
||||
[
|
||||
'name' => 'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
'description' => 'Tests the Simpletest UI internal browser. And the summary line continues an there is no gap to the annotation.',
|
||||
'type' => 'Simpletest',
|
||||
'group' => 'simpletest',
|
||||
'groups' => ['simpletest'],
|
||||
'name' => 'Drupal\Tests\ExampleSimpleTest',
|
||||
'description' => 'Example test. And the summary line continues and there is no gap to the annotation.',
|
||||
'type' => 'PHPUnit-Unit',
|
||||
'group' => 'test',
|
||||
'groups' => ['test'],
|
||||
],
|
||||
// Classname.
|
||||
'Drupal\simpletest\Tests\ExampleSimpleTest',
|
||||
'Drupal\Tests\ExampleSimpleTest',
|
||||
// Doc block.
|
||||
"/**
|
||||
* Tests the Simpletest UI internal browser. And the summary line continues an
|
||||
* there is no gap to the annotation.
|
||||
* Example test. And the summary line continues and there is no gap to the
|
||||
* annotation.
|
||||
*
|
||||
* @group simpletest
|
||||
* @group test
|
||||
*/
|
||||
",
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,104 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\Core\Test;
|
||||
|
||||
use Composer\Autoload\ClassLoader;
|
||||
use Drupal\Core\Extension\Extension;
|
||||
use Drupal\Core\Test\TestRunnerKernel;
|
||||
use org\bovigo\vfs\vfsStream;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \Drupal\Core\Test\TestRunnerKernel
|
||||
* @runTestsInSeparateProcesses
|
||||
* @preserveGlobalState disabled
|
||||
* @group Test
|
||||
* @group simpletest
|
||||
*/
|
||||
class TestRunnerKernelTest extends TestCase {
|
||||
|
||||
/**
|
||||
* Data provider for self::testConstructor().
|
||||
*/
|
||||
public function providerTestConstructor() {
|
||||
$core = [
|
||||
'core' => [
|
||||
'modules' => [
|
||||
'system' => [
|
||||
'system.info.yml' => 'type: module',
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
$tests = [];
|
||||
$tests['simpletest-in-contrib'] = [
|
||||
$core + [
|
||||
'modules' => [
|
||||
'contrib' => [
|
||||
'simpletest' => [
|
||||
'simpletest.info.yml' => 'type: module',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'modules/contrib/simpletest',
|
||||
];
|
||||
|
||||
$tests['simpletest-simpletest-in-contrib'] = [
|
||||
$core + [
|
||||
'modules' => [
|
||||
'contrib' => [
|
||||
'simpletest-simpletest' => [
|
||||
'simpletest.info.yml' => 'type: module',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'modules/contrib/simpletest-simpletest',
|
||||
];
|
||||
|
||||
$tests['simpletest-no-contrib'] = [
|
||||
$core + [
|
||||
'modules' => [
|
||||
'simpletest' => [
|
||||
'simpletest.info.yml' => 'type: module',
|
||||
],
|
||||
],
|
||||
],
|
||||
'modules/simpletest',
|
||||
];
|
||||
|
||||
$tests['no-simpletest'] = [
|
||||
$core,
|
||||
FALSE,
|
||||
];
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::__construct
|
||||
* @dataProvider providerTestConstructor
|
||||
*/
|
||||
public function testConstructor($file_system, $expected) {
|
||||
// Set up the file system.
|
||||
$vfs = vfsStream::setup('root');
|
||||
vfsStream::create($file_system, $vfs);
|
||||
|
||||
$kernel = new TestRunnerKernel('prod', new ClassLoader(), FALSE, vfsStream::url('root'));
|
||||
$class = new \ReflectionClass(TestRunnerKernel::class);
|
||||
$instance_method = $class->getMethod('moduleData');
|
||||
$instance_method->setAccessible(TRUE);
|
||||
/** @var \Drupal\Core\Extension\Extension $extension */
|
||||
$extension = $instance_method->invoke($kernel, 'simpletest');
|
||||
|
||||
if ($expected === FALSE) {
|
||||
$this->assertFalse($extension);
|
||||
}
|
||||
else {
|
||||
$this->assertInstanceOf(Extension::class, $extension);
|
||||
$this->assertSame($expected, $extension->getPath());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue