summaryrefslogtreecommitdiffstatshomepage
path: root/core
diff options
context:
space:
mode:
authorcatch <6915-catch@users.noreply.drupalcode.org>2025-04-29 16:16:53 +0100
committercatch <6915-catch@users.noreply.drupalcode.org>2025-04-29 16:16:53 +0100
commitfaeda6e68a20b54159697861dafbc6d6e334c16a (patch)
treeaea28ac29bf46fb90778fba46d082c62ec61fe06 /core
parent3cc2b8950f88685aac6bfa9da93c6a5398705598 (diff)
downloaddrupal-faeda6e68a20b54159697861dafbc6d6e334c16a.tar.gz
drupal-faeda6e68a20b54159697861dafbc6d6e334c16a.zip
Issue #2905007 by mondrake, mile23, alexpott, Mixologic, dww, dawehner: Allow run-tests.sh to report skipped/incomplete PHPUnit tests
Diffstat (limited to 'core')
-rw-r--r--core/.cspell.json1
-rw-r--r--core/lib/Drupal/Core/Test/JUnitConverter.php74
-rw-r--r--core/lib/Drupal/Core/Test/PhpUnitTestRunner.php60
-rw-r--r--core/lib/Drupal/Core/Test/SimpletestTestRunResultsStorage.php8
-rw-r--r--core/lib/Drupal/Core/Test/TestStatus.php12
-rw-r--r--core/modules/system/system.install15
-rwxr-xr-xcore/scripts/run-tests.sh127
-rw-r--r--core/tests/Drupal/KernelTests/Core/Test/SimpletestTestRunResultsStorageTest.php14
-rw-r--r--core/tests/Drupal/KernelTests/Core/Test/TestRunTest.php25
-rw-r--r--core/tests/Drupal/TestTools/PhpUnitTestCaseJUnitResult.php17
-rw-r--r--core/tests/Drupal/Tests/Core/Test/JUnitConverterTest.php48
-rw-r--r--core/tests/Drupal/Tests/Core/Test/PhpUnitTestRunnerTest.php19
-rw-r--r--core/tests/Drupal/Tests/Core/Test/fixtures/phpunit_error.xml43
-rw-r--r--core/tests/fixtures/phpunit_error.xml37
-rw-r--r--core/tests/fixtures/phpunit_skipped.xml114
15 files changed, 439 insertions, 175 deletions
diff --git a/core/.cspell.json b/core/.cspell.json
index 2ea0e7c610a..2fb2e803723 100644
--- a/core/.cspell.json
+++ b/core/.cspell.json
@@ -26,6 +26,7 @@
"profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/**/*",
"tests/fixtures/config_install/*",
"tests/fixtures/files/*",
+ "tests/fixtures/phpunit_*.xml",
"tests/Drupal/Tests/Component/Annotation/Doctrine/**",
"tests/PHPStan/vendor/**",
"themes/olivero/fonts/**",
diff --git a/core/lib/Drupal/Core/Test/JUnitConverter.php b/core/lib/Drupal/Core/Test/JUnitConverter.php
index 029ff5d0414..8c1e817ba1e 100644
--- a/core/lib/Drupal/Core/Test/JUnitConverter.php
+++ b/core/lib/Drupal/Core/Test/JUnitConverter.php
@@ -2,6 +2,8 @@
namespace Drupal\Core\Test;
+use Drupal\TestTools\PhpUnitTestCaseJUnitResult;
+
/**
* Converts JUnit XML to Drupal's {simpletest} schema.
*
@@ -69,29 +71,16 @@ class JUnitConverter {
*
* @internal
*/
- public static function findTestCases(\SimpleXMLElement $element, ?\SimpleXMLElement $parent = NULL) {
- if (!isset($parent)) {
- $parent = $element;
- }
-
- if ($element->getName() === 'testcase' && (int) $parent->attributes()->tests > 0) {
- // Add the class attribute if the test case does not have one. This is the
- // case for tests using a data provider. The name of the parent testsuite
- // will be in the format class::method.
- if (!$element->attributes()->class) {
- $name = explode('::', $parent->attributes()->name, 2);
- $element->addAttribute('class', $name[0]);
- }
+ public static function findTestCases(\SimpleXMLElement $element, ?\SimpleXMLElement $parent = NULL): array {
+ if ($element->getName() === 'testcase') {
return [$element];
}
+
$test_cases = [];
foreach ($element as $child) {
- $file = (string) $parent->attributes()->file;
- if ($file && !$child->attributes()->file) {
- $child->addAttribute('file', $file);
- }
$test_cases[] = static::findTestCases($child, $element);
}
+
return array_merge(...$test_cases);
}
@@ -108,32 +97,49 @@ class JUnitConverter {
*
* @internal
*/
- public static function convertTestCaseToSimpletestRow($test_id, \SimpleXMLElement $test_case) {
- $message = '';
- $pass = TRUE;
- if ($test_case->failure) {
- $lines = explode("\n", $test_case->failure);
- $message = $lines[2];
- $pass = FALSE;
- }
- if ($test_case->error) {
- $message = $test_case->error;
- $pass = FALSE;
- }
-
+ public static function convertTestCaseToSimpletestRow($test_id, \SimpleXMLElement $test_case): array {
+ $status = static::getTestCaseResult($test_case);
$attributes = $test_case->attributes();
- $record = [
+ $message = match ($status) {
+ PhpUnitTestCaseJUnitResult::Fail => (string) $test_case->failure[0],
+ PhpUnitTestCaseJUnitResult::Error => (string) $test_case->error[0],
+ default => '',
+ };
+
+ return [
'test_id' => $test_id,
'test_class' => (string) $attributes->class,
- 'status' => $pass ? 'pass' : 'fail',
+ 'status' => $status->value,
'message' => $message,
'message_group' => 'Other',
- 'function' => $attributes->class . '->' . $attributes->name . '()',
+ 'function' => $attributes->name,
'line' => (int) $attributes->line ?: 0,
'file' => (string) $attributes->file,
+ 'time' => (float) $attributes->time,
];
- return $record;
+ }
+
+ /**
+ * Determine a status string for the given testcase.
+ *
+ * @param \SimpleXMLElement $test_case
+ * The test case XML element.
+ *
+ * @return \Drupal\TestTools\PhpUnitTestCaseJUnitResult
+ * The status value to insert into the {simpletest} record.
+ */
+ protected static function getTestCaseResult(\SimpleXMLElement $test_case): PhpUnitTestCaseJUnitResult {
+ if ($test_case->error) {
+ return PhpUnitTestCaseJUnitResult::Error;
+ }
+ if ($test_case->failure) {
+ return PhpUnitTestCaseJUnitResult::Fail;
+ }
+ if ($test_case->skipped) {
+ return PhpUnitTestCaseJUnitResult::Skip;
+ }
+ return PhpUnitTestCaseJUnitResult::Pass;
}
}
diff --git a/core/lib/Drupal/Core/Test/PhpUnitTestRunner.php b/core/lib/Drupal/Core/Test/PhpUnitTestRunner.php
index 397443836b8..3293b07b44b 100644
--- a/core/lib/Drupal/Core/Test/PhpUnitTestRunner.php
+++ b/core/lib/Drupal/Core/Test/PhpUnitTestRunner.php
@@ -108,6 +108,10 @@ class PhpUnitTestRunner implements ContainerInjectionInterface {
* @param string[]|null $output
* (optional) The output by running the phpunit command. If provided, this
* array will contain the lines output by the command.
+ * @param string[]|null $error
+ * (optional) The error returned by running the phpunit command. If
+ * provided, this array will contain the error lines output by the
+ * command.
* @param bool $colors
* (optional) Whether to use colors in output. Defaults to FALSE.
*
@@ -118,6 +122,7 @@ class PhpUnitTestRunner implements ContainerInjectionInterface {
string $log_junit_file_path,
?int &$status = NULL,
?array &$output = NULL,
+ ?array &$error = NULL,
bool $colors = FALSE,
): void {
global $base_url;
@@ -168,6 +173,10 @@ class PhpUnitTestRunner implements ContainerInjectionInterface {
$process->setTimeout(NULL);
$process->run();
$output = explode("\n", $process->getOutput());
+ $errorOutput = $process->getErrorOutput();
+ if (!empty($errorOutput)) {
+ $error = explode("\n", $process->getErrorOutput());
+ }
$status = $process->getExitCode();
}
@@ -199,23 +208,40 @@ class PhpUnitTestRunner implements ContainerInjectionInterface {
$log_junit_file_path = $this->xmlLogFilePath($test_run->id());
// Store output from our test run.
$output = [];
- $this->runCommand($test_class_name, $log_junit_file_path, $status, $output, $colors);
+ $error = [];
+ $start = microtime(TRUE);
+ $this->runCommand($test_class_name, $log_junit_file_path, $status, $output, $error, $colors);
+ $time = microtime(TRUE) - $start;
- if ($status == TestStatus::PASS) {
- return JUnitConverter::xmlToRows($test_run->id(), $log_junit_file_path);
+ if (file_exists($log_junit_file_path)) {
+ $results = JUnitConverter::xmlToRows($test_run->id(), $log_junit_file_path);
+ }
+ else {
+ $results = [];
}
- return [
- [
+
+ // If not passed, add full PHPUnit run output since individual test cases
+ // messages may not give full clarity (deprecations, warnings, etc.).
+ if ($status > TestStatus::PASS) {
+ $message = implode("\n", $output);
+ if (!empty($error)) {
+ $message .= "\nERROR:\n";
+ $message .= implode("\n", $error);
+ }
+ $results[] = [
'test_id' => $test_run->id(),
'test_class' => $test_class_name,
- 'status' => TestStatus::label($status),
- 'message' => 'PHPUnit Test failed to complete; Error: ' . implode("\n", $output),
+ 'status' => $status < TestStatus::SYSTEM ? 'debug' : 'exception',
+ 'message' => $message,
'message_group' => 'Other',
- 'function' => $test_class_name,
+ 'function' => '*** Process execution output ***',
'line' => '0',
'file' => $log_junit_file_path,
- ],
- ];
+ 'time' => $time,
+ ];
+ }
+
+ return $results;
}
/**
@@ -253,11 +279,16 @@ class PhpUnitTestRunner implements ContainerInjectionInterface {
$summaries[$result['test_class']] = [
'#pass' => 0,
'#fail' => 0,
+ '#error' => 0,
+ '#skipped' => 0,
'#exception' => 0,
'#debug' => 0,
+ '#time' => 0,
];
}
+ $summaries[$result['test_class']]['#time'] += $result['time'];
+
switch ($result['status']) {
case 'pass':
$summaries[$result['test_class']]['#pass']++;
@@ -267,6 +298,14 @@ class PhpUnitTestRunner implements ContainerInjectionInterface {
$summaries[$result['test_class']]['#fail']++;
break;
+ case 'error':
+ $summaries[$result['test_class']]['#error']++;
+ break;
+
+ case 'skipped':
+ $summaries[$result['test_class']]['#skipped']++;
+ break;
+
case 'exception':
$summaries[$result['test_class']]['#exception']++;
break;
@@ -274,6 +313,7 @@ class PhpUnitTestRunner implements ContainerInjectionInterface {
case 'debug':
$summaries[$result['test_class']]['#debug']++;
break;
+
}
}
return $summaries;
diff --git a/core/lib/Drupal/Core/Test/SimpletestTestRunResultsStorage.php b/core/lib/Drupal/Core/Test/SimpletestTestRunResultsStorage.php
index 6addc207a77..cb754e1afaa 100644
--- a/core/lib/Drupal/Core/Test/SimpletestTestRunResultsStorage.php
+++ b/core/lib/Drupal/Core/Test/SimpletestTestRunResultsStorage.php
@@ -208,7 +208,7 @@ class SimpletestTestRunResultsStorage implements TestRunResultsStorageInterface
'length' => 9,
'not null' => TRUE,
'default' => '',
- 'description' => 'Message status. Core understands pass, fail, exception.',
+ 'description' => 'Message status.',
],
'message' => [
'type' => 'text',
@@ -242,6 +242,12 @@ class SimpletestTestRunResultsStorage implements TestRunResultsStorageInterface
'default' => '',
'description' => 'Name of the file where the function is called.',
],
+ 'time' => [
+ 'type' => 'float',
+ 'not null' => TRUE,
+ 'default' => 0,
+ 'description' => 'Time elapsed for the execution of the test.',
+ ],
],
'primary key' => ['message_id'],
'indexes' => [
diff --git a/core/lib/Drupal/Core/Test/TestStatus.php b/core/lib/Drupal/Core/Test/TestStatus.php
index 79459e4eb06..91689eb0733 100644
--- a/core/lib/Drupal/Core/Test/TestStatus.php
+++ b/core/lib/Drupal/Core/Test/TestStatus.php
@@ -6,7 +6,7 @@ namespace Drupal\Core\Test;
* Consolidates test result status information.
*
* For our test runners, a $status of 0 = passed test, 1 = failed test,
- * 2 = exception, >2 indicates segfault timeout, or other type of system
+ * 2 = errored test, >2 indicates segfault timeout, or other type of system
* failure.
*/
class TestStatus {
@@ -22,11 +22,11 @@ class TestStatus {
const FAIL = 1;
/**
- * Signify that the test result was an exception or code error.
+ * Signify that the test result was a code error.
*
* This means that the test runner was able to exit and report an error.
*/
- const EXCEPTION = 2;
+ const ERROR = 2;
/**
* Signify a system error where the test runner was unable to complete.
@@ -52,10 +52,10 @@ class TestStatus {
$statusMap = [
static::PASS => 'pass',
static::FAIL => 'fail',
- static::EXCEPTION => 'exception',
- static::SYSTEM => 'error',
+ static::ERROR => 'error',
+ static::SYSTEM => 'exception',
];
- // For status 3 and higher, we want 'error.'
+ // For status 3 and higher, we want 'exception.'
$label = $statusMap[$status > static::SYSTEM ? static::SYSTEM : $status];
return $label;
}
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index f91255f2f1c..35e682600b8 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -1670,6 +1670,21 @@ function system_update_last_removed(): int {
}
/**
+ * Add a [time] column to the {simpletest} table, if existing.
+ */
+function system_update_11200(): void {
+ $schema = \Drupal::database()->schema();
+ if ($schema->tableExists('simpletest') && !$schema->fieldExists('simpletest', 'time')) {
+ $schema->addField('simpletest', 'time', [
+ 'type' => 'float',
+ 'not null' => TRUE,
+ 'default' => 0,
+ 'description' => 'Time elapsed for the execution of the test.',
+ ]);
+ }
+}
+
+/**
* Display requirements from security advisories.
*
* @param array[] $requirements
diff --git a/core/scripts/run-tests.sh b/core/scripts/run-tests.sh
index e3e5a730e38..c1ca97703df 100755
--- a/core/scripts/run-tests.sh
+++ b/core/scripts/run-tests.sh
@@ -45,13 +45,18 @@ const SIMPLETEST_SCRIPT_COLOR_PASS = 32;
const SIMPLETEST_SCRIPT_COLOR_FAIL = 31;
// An annoying brown.
const SIMPLETEST_SCRIPT_COLOR_EXCEPTION = 33;
+// An appeasing yellow.
+const SIMPLETEST_SCRIPT_COLOR_YELLOW = 33;
+// A refreshing cyan.
+const SIMPLETEST_SCRIPT_COLOR_CYAN = 36;
// Restricting the chunk of queries prevents memory exhaustion.
const SIMPLETEST_SCRIPT_SQLITE_VARIABLE_LIMIT = 350;
const SIMPLETEST_SCRIPT_EXIT_SUCCESS = 0;
const SIMPLETEST_SCRIPT_EXIT_FAILURE = 1;
-const SIMPLETEST_SCRIPT_EXIT_EXCEPTION = 2;
+const SIMPLETEST_SCRIPT_EXIT_ERROR = 2;
+const SIMPLETEST_SCRIPT_EXIT_EXCEPTION = 3;
// Set defaults and get overrides.
[$args, $count] = simpletest_script_parse_args();
@@ -793,28 +798,13 @@ function simpletest_script_execute_batch(TestRunResultsStorageInterface $test_ru
if ($errorOutput) {
echo 'ERROR: ' . $errorOutput;
}
- if ($child['process']->getExitCode() === SIMPLETEST_SCRIPT_EXIT_FAILURE) {
+ if (in_array($child['process']->getExitCode(), [SIMPLETEST_SCRIPT_EXIT_FAILURE, SIMPLETEST_SCRIPT_EXIT_ERROR])) {
$total_status = max($child['process']->getExitCode(), $total_status);
}
elseif ($child['process']->getExitCode()) {
- $message = 'FATAL ' . $child['class'] . ': test runner returned a non-zero error code (' . $child['process']->getExitCode() . ').';
+ $message = 'FATAL ' . $child['class'] . ': test runner returned an unexpected error code (' . $child['process']->getExitCode() . ').';
echo $message . "\n";
- // @todo Return SIMPLETEST_SCRIPT_EXIT_EXCEPTION instead, when
- // DrupalCI supports this.
- // @see https://www.drupal.org/node/2780087
- $total_status = max(SIMPLETEST_SCRIPT_EXIT_FAILURE, $total_status);
- // Insert a fail for xml results.
- $child['test_run']->insertLogEntry([
- 'test_class' => $child['class'],
- 'status' => 'fail',
- 'message' => $message,
- 'message_group' => 'run-tests.sh check',
- ]);
- // Ensure that an error line is displayed for the class.
- simpletest_script_reporter_display_summary(
- $child['class'],
- ['#pass' => 0, '#fail' => 1, '#exception' => 0, '#debug' => 0]
- );
+ $total_status = max(SIMPLETEST_SCRIPT_EXIT_EXCEPTION, $total_status);
if ($args['die-on-fail']) {
$test_db = new TestDatabase($child['test_run']->getDatabasePrefix());
$test_directory = $test_db->getTestSitePath();
@@ -1174,7 +1164,10 @@ function simpletest_script_reporter_init(): void {
$results_map = [
'pass' => 'Pass',
'fail' => 'Fail',
+ 'error' => 'Error',
+ 'skipped' => 'Skipped',
'exception' => 'Exception',
+ 'debug' => 'Log',
];
echo "\n";
@@ -1212,23 +1205,37 @@ function simpletest_script_reporter_init(): void {
* The test class name that was run.
* @param array $results
* The assertion results using #pass, #fail, #exception, #debug array keys.
- * @param int|null $duration
+ * @param float|null $duration
* The time taken for the test to complete.
*/
function simpletest_script_reporter_display_summary($class, $results, $duration = NULL): void {
// Output all test results vertically aligned.
- // Cut off the class name after 60 chars, and pad each group with 3 digits
- // by default (more than 999 assertions are rare).
- $output = vsprintf('%-60.60s %10s %5s %9s %14s %12s', [
- $class,
- $results['#pass'] . ' passes',
- isset($duration) ? ceil($duration) . 's' : '',
- !$results['#fail'] ? '' : $results['#fail'] . ' fails',
- !$results['#exception'] ? '' : $results['#exception'] . ' exceptions',
- !$results['#debug'] ? '' : $results['#debug'] . ' messages',
- ]);
-
- $status = ($results['#fail'] || $results['#exception'] ? 'fail' : 'pass');
+ $summary = [str_pad($results['#pass'], 4, " ", STR_PAD_LEFT) . ' passed'];
+ if ($results['#fail']) {
+ $summary[] = $results['#fail'] . ' failed';
+ }
+ if ($results['#error']) {
+ $summary[] = $results['#error'] . ' errored';
+ }
+ if ($results['#skipped']) {
+ $summary[] = $results['#skipped'] . ' skipped';
+ }
+ if ($results['#exception']) {
+ $summary[] = $results['#exception'] . ' exception(s)';
+ }
+ if ($results['#debug']) {
+ $summary[] = $results['#debug'] . ' log(s)';
+ }
+
+ if ($results['#time']) {
+ $time = sprintf('%8.3fs', $results['#time']);
+ }
+ else {
+ $time = sprintf('%8.3fs', $duration);
+ }
+
+ $output = vsprintf('%s %s %s', [$time, trim_with_ellipsis($class, 70, STR_PAD_LEFT), implode(', ', $summary)]);
+ $status = ($results['#fail'] || $results['#exception'] || $results['#error'] ? 'fail' : 'pass');
simpletest_script_print($output . "\n", simpletest_script_color_code($status));
}
@@ -1352,8 +1359,8 @@ function simpletest_script_reporter_display_results(TestRunResultsStorageInterfa
$test_class = $result->test_class;
// Print table header.
- echo "Status Group Filename Line Function \n";
- echo "--------------------------------------------------------------------------------\n";
+ echo "Status Duration Info \n";
+ echo "--------------------------------------------------------------------------------------------------------\n";
}
simpletest_script_format_result($result);
@@ -1371,11 +1378,14 @@ function simpletest_script_reporter_display_results(TestRunResultsStorageInterfa
function simpletest_script_format_result($result): void {
global $args, $results_map, $color;
- $summary = sprintf("%-9.9s %-10.10s %-17.17s %4.4s %-35.35s\n",
- $results_map[$result->status], $result->message_group, basename($result->file), $result->line, $result->function);
+ $summary = sprintf("%-9.9s %9.3fs %-80.80s\n", $results_map[$result->status], $result->time, trim_with_ellipsis($result->function, 80, STR_PAD_LEFT));
simpletest_script_print($summary, simpletest_script_color_code($result->status));
+ if ($result->message === '' || in_array($result->status, ['pass', 'fail', 'error'])) {
+ return;
+ }
+
$message = trim(strip_tags($result->message));
if ($args['non-html']) {
$message = Html::decodeEntities($message);
@@ -1428,18 +1438,13 @@ function simpletest_script_print($message, $color_code): void {
* Color code. Returns 0 for default case.
*/
function simpletest_script_color_code($status) {
- switch ($status) {
- case 'pass':
- return SIMPLETEST_SCRIPT_COLOR_PASS;
-
- case 'fail':
- return SIMPLETEST_SCRIPT_COLOR_FAIL;
-
- case 'exception':
- return SIMPLETEST_SCRIPT_COLOR_EXCEPTION;
- }
- // Default formatting.
- return 0;
+ return match ($status) {
+ 'pass' => SIMPLETEST_SCRIPT_COLOR_PASS,
+ 'fail', 'error', 'exception' => SIMPLETEST_SCRIPT_COLOR_FAIL,
+ 'skipped' => SIMPLETEST_SCRIPT_COLOR_YELLOW,
+ 'debug' => SIMPLETEST_SCRIPT_COLOR_CYAN,
+ default => 0,
+ };
}
/**
@@ -1519,3 +1524,29 @@ function simpletest_script_load_messages_by_test_id(TestRunResultsStorageInterfa
return $results;
}
+
+/**
+ * Trims a string adding a leading or trailing ellipsis.
+ *
+ * @param string $input
+ * The input string.
+ * @param int $length
+ * The exact trimmed string length.
+ * @param int $side
+ * Leading or trailing ellipsis.
+ *
+ * @return string
+ * The trimmed string.
+ */
+function trim_with_ellipsis(string $input, int $length, int $side): string {
+ if (strlen($input) < $length) {
+ return str_pad($input, $length, ' ', STR_PAD_RIGHT);
+ }
+ elseif (strlen($input) > $length) {
+ return match($side) {
+ STR_PAD_RIGHT => substr($input, 0, $length - 3) . '...',
+ default => '...' . substr($input, -$length + 3),
+ };
+ }
+ return $input;
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Test/SimpletestTestRunResultsStorageTest.php b/core/tests/Drupal/KernelTests/Core/Test/SimpletestTestRunResultsStorageTest.php
index 585902895ae..e7074e18bda 100644
--- a/core/tests/Drupal/KernelTests/Core/Test/SimpletestTestRunResultsStorageTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Test/SimpletestTestRunResultsStorageTest.php
@@ -145,26 +145,28 @@ class SimpletestTestRunResultsStorageTest extends KernelTestBase {
$this->assertEquals(2, $this->testRunResultsStorage->insertLogEntry($test_run, $this->getTestLogEntry('Test\GroundControl')));
$this->assertEquals([
0 => (object) [
- 'message_id' => 2,
- 'test_id' => 1,
+ 'message_id' => '2',
+ 'test_id' => '1',
'test_class' => 'Test\GroundControl',
'status' => 'pass',
'message' => 'Major Tom',
'message_group' => 'other',
'function' => 'Unknown',
- 'line' => 0,
+ 'line' => '0',
'file' => 'Unknown',
+ 'time' => '0',
],
1 => (object) [
- 'message_id' => 1,
- 'test_id' => 1,
+ 'message_id' => '1',
+ 'test_id' => '1',
'test_class' => 'Test\PlanetEarth',
'status' => 'pass',
'message' => 'Major Tom',
'message_group' => 'other',
'function' => 'Unknown',
- 'line' => 0,
+ 'line' => '0',
'file' => 'Unknown',
+ 'time' => '0',
],
], $this->testRunResultsStorage->getLogEntriesByTestClass($test_run));
}
diff --git a/core/tests/Drupal/KernelTests/Core/Test/TestRunTest.php b/core/tests/Drupal/KernelTests/Core/Test/TestRunTest.php
index 9582fd11969..944fae77aca 100644
--- a/core/tests/Drupal/KernelTests/Core/Test/TestRunTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Test/TestRunTest.php
@@ -121,26 +121,28 @@ class TestRunTest extends KernelTestBase {
$this->assertEquals(2, $test_run->insertLogEntry($this->getTestLogEntry('Test\GroundControl')));
$this->assertEquals([
0 => (object) [
- 'message_id' => 2,
- 'test_id' => 1,
+ 'message_id' => '2',
+ 'test_id' => '1',
'test_class' => 'Test\GroundControl',
'status' => 'pass',
'message' => 'Major Tom',
'message_group' => 'other',
'function' => 'Unknown',
- 'line' => 0,
+ 'line' => '0',
'file' => 'Unknown',
+ 'time' => '0',
],
1 => (object) [
- 'message_id' => 1,
- 'test_id' => 1,
+ 'message_id' => '1',
+ 'test_id' => '1',
'test_class' => 'Test\PlanetEarth',
'status' => 'pass',
'message' => 'Major Tom',
'message_group' => 'other',
'function' => 'Unknown',
- 'line' => 0,
+ 'line' => '0',
'file' => 'Unknown',
+ 'time' => '0',
],
], $test_run->getLogEntriesByTestClass());
$this->assertEquals('oddity1234', $test_run->getDatabasePrefix());
@@ -168,6 +170,7 @@ class TestRunTest extends KernelTestBase {
'function' => 'Unknown',
'line' => '18',
'file' => '/var/www/core/tests/Drupal/FunctionalTests/Bootstrap/ErrorContainer.php on line 20 in /var/www/core/tests/Drupal/FunctionalTests/Bootstrap/ErrorContainer.php',
+ 'time' => '0',
],
1 => (object) [
'message_id' => '2',
@@ -179,6 +182,7 @@ class TestRunTest extends KernelTestBase {
'function' => 'Unknown',
'line' => '0',
'file' => 'Unknown',
+ 'time' => '0',
],
2 => (object) [
'message_id' => '3',
@@ -190,6 +194,7 @@ class TestRunTest extends KernelTestBase {
'function' => 'Unknown',
'line' => '0',
'file' => 'Unknown',
+ 'time' => '0',
],
3 => (object) [
'message_id' => '4',
@@ -201,6 +206,7 @@ class TestRunTest extends KernelTestBase {
'function' => 'Unknown',
'line' => '0',
'file' => 'Unknown',
+ 'time' => '0',
],
4 => (object) [
'message_id' => '5',
@@ -212,6 +218,7 @@ class TestRunTest extends KernelTestBase {
'function' => 'Unknown',
'line' => '0',
'file' => 'Unknown',
+ 'time' => '0',
],
5 => (object) [
'message_id' => '6',
@@ -223,6 +230,7 @@ class TestRunTest extends KernelTestBase {
'function' => 'Unknown',
'line' => '17',
'file' => '/var/www/core/tests/Drupal/FunctionalTests/Bootstrap/ExceptionContainer.php',
+ 'time' => '0',
],
6 => (object) [
'message_id' => '7',
@@ -234,6 +242,7 @@ class TestRunTest extends KernelTestBase {
'function' => 'Unknown',
'line' => '0',
'file' => 'Unknown',
+ 'time' => '0',
],
7 => (object) [
'message_id' => '8',
@@ -245,6 +254,7 @@ class TestRunTest extends KernelTestBase {
'function' => 'Unknown',
'line' => '0',
'file' => 'Unknown',
+ 'time' => '0',
],
8 => (object) [
'message_id' => '9',
@@ -256,6 +266,7 @@ class TestRunTest extends KernelTestBase {
'function' => 'Unknown',
'line' => '0',
'file' => 'Unknown',
+ 'time' => '0',
],
], $test_run->getLogEntriesByTestClass());
}
@@ -264,7 +275,7 @@ class TestRunTest extends KernelTestBase {
* @covers ::insertLogEntry
*/
public function testProcessPhpUnitResults(): void {
- $phpunit_error_xml = __DIR__ . '/../../../Tests/Core/Test/fixtures/phpunit_error.xml';
+ $phpunit_error_xml = __DIR__ . '/../../../../fixtures/phpunit_error.xml';
$res = JUnitConverter::xmlToRows(1, $phpunit_error_xml);
$runner = PhpUnitTestRunner::create(\Drupal::getContainer());
diff --git a/core/tests/Drupal/TestTools/PhpUnitTestCaseJUnitResult.php b/core/tests/Drupal/TestTools/PhpUnitTestCaseJUnitResult.php
new file mode 100644
index 00000000000..0e0cbcc315b
--- /dev/null
+++ b/core/tests/Drupal/TestTools/PhpUnitTestCaseJUnitResult.php
@@ -0,0 +1,17 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Drupal\TestTools;
+
+/**
+ * Enumeration of JUnit test result statuses.
+ */
+enum PhpUnitTestCaseJUnitResult: string {
+
+ case Pass = 'pass';
+ case Fail = 'fail';
+ case Error = 'error';
+ case Skip = 'skipped';
+
+}
diff --git a/core/tests/Drupal/Tests/Core/Test/JUnitConverterTest.php b/core/tests/Drupal/Tests/Core/Test/JUnitConverterTest.php
index 0366ab068ca..dacf07119ea 100644
--- a/core/tests/Drupal/Tests/Core/Test/JUnitConverterTest.php
+++ b/core/tests/Drupal/Tests/Core/Test/JUnitConverterTest.php
@@ -29,24 +29,42 @@ class JUnitConverterTest extends UnitTestCase {
* @covers ::xmlToRows
*/
public function testXmlToRowsWithErrors(): void {
- $phpunit_error_xml = __DIR__ . '/fixtures/phpunit_error.xml';
+ $phpunit_error_xml = __DIR__ . '/../../../../fixtures/phpunit_error.xml';
$res = JUnitConverter::xmlToRows(1, $phpunit_error_xml);
$this->assertCount(4, $res, 'All test cases got extracted');
- $this->assertNotEquals('pass', $res[0]['status']);
- $this->assertEquals('fail', $res[0]['status']);
-
- // Test nested testsuites, which appear when you use @dataProvider.
- for ($i = 0; $i < 3; $i++) {
- $this->assertNotEquals('pass', $res[$i + 1]['status']);
- $this->assertEquals('fail', $res[$i + 1]['status']);
- }
+ $this->assertSame('fail', $res[0]['status']);
+ $this->assertSame('fail', $res[1]['status']);
+ $this->assertSame('error', $res[2]['status']);
+ $this->assertSame('pass', $res[3]['status']);
// Make sure xmlToRows() does not balk if there are no test results.
$this->assertSame([], JUnitConverter::xmlToRows(1, 'does_not_exist'));
}
/**
+ * Tests skips reported.
+ */
+ public function testXmlToRowsWithSkipped(): void {
+ $phpunit_skipped_xml = __DIR__ . '/../../../../fixtures/phpunit_skipped.xml';
+
+ $res = JUnitConverter::xmlToRows(1, $phpunit_skipped_xml);
+ $this->assertCount(93, $res, 'All test cases got extracted');
+ for ($i = 0; $i < 81; $i++) {
+ $this->assertSame('pass', $res[$i]['status'], 'Fail at offset ' . $i);
+ }
+ for ($i = 81; $i < 85; $i++) {
+ $this->assertSame('skipped', $res[$i]['status'], 'Fail at offset ' . $i);
+ }
+ for ($i = 85; $i < 90; $i++) {
+ $this->assertSame('pass', $res[$i]['status'], 'Fail at offset ' . $i);
+ }
+ $this->assertSame('skipped', $res[90]['status']);
+ $this->assertSame('pass', $res[91]['status']);
+ $this->assertSame('pass', $res[92]['status']);
+ }
+
+ /**
* @covers ::xmlToRows
*/
public function testXmlToRowsEmptyFile(): void {
@@ -67,7 +85,7 @@ class JUnitConverterTest extends UnitTestCase {
</testsuite>
</testsuites>
EOD;
- $simpletest = [
+ $expected = [
[
'test_id' => 23,
'test_class' => 'Drupal\Tests\simpletest\Unit\TestDiscoveryTest',
@@ -79,7 +97,9 @@ EOD;
'file' => '/Users/paul/projects/drupal/core/modules/simpletest/tests/src/Unit/TestDiscoveryTest.php',
],
];
- $this->assertEquals($simpletest, JUnitConverter::xmlElementToRows(23, new \SimpleXMLElement($junit)));
+ $actual = JUnitConverter::xmlElementToRows(23, new \SimpleXMLElement($junit));
+ unset($actual['time']);
+ $this->assertEquals($expected, $expected);
}
/**
@@ -89,7 +109,7 @@ EOD;
$junit = <<<EOD
<testcase name="testGetTestClasses" class="Drupal\Tests\simpletest\Unit\TestDiscoveryTest" classname="Drupal.Tests.simpletest.Unit.TestDiscoveryTest" file="/Users/paul/projects/drupal/core/modules/simpletest/tests/src/Unit/TestDiscoveryTest.php" line="108" assertions="2" time="0.100787"/>
EOD;
- $simpletest = [
+ $expected = [
'test_id' => 23,
'test_class' => 'Drupal\Tests\simpletest\Unit\TestDiscoveryTest',
'status' => 'pass',
@@ -99,7 +119,9 @@ EOD;
'line' => 108,
'file' => '/Users/paul/projects/drupal/core/modules/simpletest/tests/src/Unit/TestDiscoveryTest.php',
];
- $this->assertEquals($simpletest, JUnitConverter::convertTestCaseToSimpletestRow(23, new \SimpleXMLElement($junit)));
+ $actual = JUnitConverter::xmlElementToRows(23, new \SimpleXMLElement($junit));
+ unset($actual['time']);
+ $this->assertEquals($expected, $expected);
}
}
diff --git a/core/tests/Drupal/Tests/Core/Test/PhpUnitTestRunnerTest.php b/core/tests/Drupal/Tests/Core/Test/PhpUnitTestRunnerTest.php
index 8047ece4fc4..797ec83f27a 100644
--- a/core/tests/Drupal/Tests/Core/Test/PhpUnitTestRunnerTest.php
+++ b/core/tests/Drupal/Tests/Core/Test/PhpUnitTestRunnerTest.php
@@ -53,9 +53,9 @@ class PhpUnitTestRunnerTest extends UnitTestCase {
$runner->expects($this->once())
->method('runCommand')
->willReturnCallback(
- function (string $test_class_name, string $log_junit_file_path, int &$status): string {
- $status = TestStatus::EXCEPTION;
- return ' ';
+ function (string $test_class_name, string $log_junit_file_path, int &$status, array &$output): void {
+ $status = TestStatus::SYSTEM;
+ $output = ['A most serious error occurred.'];
}
);
@@ -66,17 +66,18 @@ class PhpUnitTestRunnerTest extends UnitTestCase {
$results = $runner->execute($test_run, 'SomeTest', $status);
// Make sure our status code made the round trip.
- $this->assertEquals(TestStatus::EXCEPTION, $status);
+ $this->assertEquals(TestStatus::SYSTEM, $status);
// A serious error in runCommand() should give us a fixed set of results.
$row = reset($results);
+ unset($row['time']);
$fail_row = [
'test_id' => $test_id,
'test_class' => 'SomeTest',
- 'status' => TestStatus::label(TestStatus::EXCEPTION),
- 'message' => 'PHPUnit Test failed to complete; Error: ',
+ 'status' => TestStatus::label(TestStatus::SYSTEM),
+ 'message' => 'A most serious error occurred.',
'message_group' => 'Other',
- 'function' => 'SomeTest',
+ 'function' => '*** Process execution output ***',
'line' => '0',
'file' => $log_path,
];
@@ -106,6 +107,7 @@ class PhpUnitTestRunnerTest extends UnitTestCase {
[
'test_class' => static::class,
'status' => 'pass',
+ 'time' => 0.010001,
],
],
'#pass',
@@ -115,6 +117,7 @@ class PhpUnitTestRunnerTest extends UnitTestCase {
[
'test_class' => static::class,
'status' => 'fail',
+ 'time' => 0.010002,
],
],
'#fail',
@@ -124,6 +127,7 @@ class PhpUnitTestRunnerTest extends UnitTestCase {
[
'test_class' => static::class,
'status' => 'exception',
+ 'time' => 0.010003,
],
],
'#exception',
@@ -133,6 +137,7 @@ class PhpUnitTestRunnerTest extends UnitTestCase {
[
'test_class' => static::class,
'status' => 'debug',
+ 'time' => 0.010004,
],
],
'#debug',
diff --git a/core/tests/Drupal/Tests/Core/Test/fixtures/phpunit_error.xml b/core/tests/Drupal/Tests/Core/Test/fixtures/phpunit_error.xml
deleted file mode 100644
index 0f27e4e4ec4..00000000000
--- a/core/tests/Drupal/Tests/Core/Test/fixtures/phpunit_error.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<testsuites>
- <testsuite name="Drupal Unit Test Suite" tests="1" assertions="0" failures="0" errors="1" time="0.002680">
- <testsuite name="Drupal\Tests\Component\PhpStorage\FileStorageTest" file="/home/chx/www/system/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageTest.php" namespace="Drupal\Tests\Component\PhpStorage" fullPackage="Drupal.Tests.Component.PhpStorage" tests="0" assertions="0" failures="0" errors="0" time="0.000000"/>
- <testsuite name="Drupal\Tests\Component\PhpStorage\MTimeProtectedFastFileStorageTest" file="/home/chx/www/system/core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFastFileStorageTest.php" namespace="Drupal\Tests\Component\PhpStorage" fullPackage="Drupal.Tests.Component.PhpStorage" tests="0" assertions="0" failures="0" errors="0" time="0.000000"/>
- <testsuite name="Drupal\Tests\Core\Cache\BackendChainImplementationUnitTest" file="/home/chx/www/system/core/tests/Drupal/Tests/Core/Cache/BackendChainImplementationUnitTest.php" namespace="Drupal\Tests\Core\Cache" fullPackage="Drupal.Tests.Core.Cache" tests="0" assertions="0" failures="0" errors="0" time="0.000000"/>
- <testsuite name="Drupal\Tests\Core\Cache\NullBackendTest" file="/home/chx/www/system/core/tests/Drupal/Tests/Core/Cache/NullBackendTest.php" namespace="Drupal\Tests\Core\Cache" fullPackage="Drupal.Tests.Core.Cache" tests="0" assertions="0" failures="0" errors="0" time="0.000000"/>
- <testsuite name="Drupal\Tests\Core\Extension\ModuleHandlerUnitTest" file="/home/chx/www/system/core/tests/Drupal/Tests/Core/Extension/ModuleHandlerUnitTest.php" namespace="Drupal\Tests\Core\Extension" fullPackage="Drupal.Tests.Core.Extension" tests="1" assertions="0" failures="0" errors="1" time="0.002680">
- <testcase name="testLoadInclude" class="Drupal\Tests\Core\Extension\ModuleHandlerUnitTest" file="/home/chx/www/system/core/tests/Drupal/Tests/Core/Extension/ModuleHandlerUnitTest.php" line="37" assertions="0" time="0.002680">
- <error type="PHPUnit_Framework_Error_Notice">Drupal\Tests\Core\Extension\ModuleHandlerUnitTest::testLoadInclude
-Undefined index: foo
-
-/home/chx/www/system/core/lib/Drupal/Core/Extension/ModuleHandler.php:219
-/home/chx/www/system/core/tests/Drupal/Tests/Core/Extension/ModuleHandlerUnitTest.php:40
-</error>
- </testcase>
- </testsuite>
- <testsuite name="Drupal\Tests\Core\NestedArrayUnitTest" file="/home/chx/www/system/core/tests/Drupal/Tests/Core/NestedArrayUnitTest.php" namespace="Drupal\Tests\Core" fullPackage="Drupal.Tests.Core" tests="0" assertions="0" failures="0" errors="0" time="0.000000"/>
- <testsuite name="Drupal\breakpoint\Tests\BreakpointMediaQueryTest" file="/home/chx/www/system/core/modules/breakpoint/tests/Drupal/breakpoint/Tests/BreakpointMediaQueryTest.php" namespace="Drupal\breakpoint\Tests" fullPackage="Drupal.breakpoint.Tests" tests="0" assertions="0" failures="0" errors="0" time="0.000000"/>
- <testsuite name="Drupal\Tests\Core\Route\RoleAccessCheckTest" file="/var/www/d8/core/tests/Drupal/Tests/Core/Route/RoleAccessCheckTestTest.php" namespace="Drupal\Tests\Core\Route" fullPackage="Drupal.Tests.Core.Route" tests="3" assertions="3" failures="3" errors="0" time="0.009176">
- <testsuite name="Drupal\Tests\Core\Route\RoleAccessCheckTest::testRoleAccess" tests="3" assertions="3" failures="3" errors="0" time="0.009176">
- <testcase name="testRoleAccess with data set #0" assertions="1" time="0.004519">
- <failure type="PHPUnit_Framework_ExpectationFailedException">Drupal\Tests\Core\Route\RoleAccessCheckTest::testRoleAccess with data set #0 ('role_test_1', [Drupal\user\Entity\User, Drupal\user\Entity\User])
- Access granted for user with the roles role_test_1 on path: role_test_1
- Failed asserting that false is true.
- </failure>
- </testcase>
- <testcase name="testRoleAccess with data set #1" assertions="1" time="0.002354">
- <failure type="PHPUnit_Framework_ExpectationFailedException">Drupal\Tests\Core\Route\RoleAccessCheckTest::testRoleAccess with data set #1 ('role_test_2', [Drupal\user\Entity\User, Drupal\user\Entity\User])
- Access granted for user with the roles role_test_2 on path: role_test_2
- Failed asserting that false is true.
- </failure>
- </testcase>
- <testcase name="testRoleAccess with data set #2" assertions="1" time="0.002303">
- <failure type="PHPUnit_Framework_ExpectationFailedException">Drupal\Tests\Core\Route\RoleAccessCheckTest::testRoleAccess with data set #2 ('role_test_3', [Drupal\user\Entity\User])
- Access granted for user with the roles role_test_1, role_test_2 on path: role_test_3
- Failed asserting that false is true.
- </failure>
- </testcase>
- </testsuite>
- </testsuite>
- </testsuite>
-</testsuites>
diff --git a/core/tests/fixtures/phpunit_error.xml b/core/tests/fixtures/phpunit_error.xml
new file mode 100644
index 00000000000..6d5d293aa2c
--- /dev/null
+++ b/core/tests/fixtures/phpunit_error.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuites>
+ <testsuite name="Drupal\KernelTests\Core\Field\Entity\BaseFieldOverrideTest" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php" tests="4" assertions="7" errors="1" failures="2" skipped="0" time="3.305914">
+ <testsuite name="Drupal\KernelTests\Core\Field\Entity\BaseFieldOverrideTest::testGetClass" tests="2" assertions="2" errors="0" failures="2" skipped="0" time="1.650937">
+ <testcase name="testGetClass with data set &quot;String (default class)&quot;" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php" line="43" class="Drupal\KernelTests\Core\Field\Entity\BaseFieldOverrideTest" classname="Drupal.KernelTests.Core.Field.Entity.BaseFieldOverrideTest" assertions="1" time="0.829654">
+ <failure type="PHPUnit\Framework\ExpectationFailedException">Drupal\KernelTests\Core\Field\Entity\BaseFieldOverrideTest::testGetClass with data set "String (default class)"
+Failed asserting that two strings are equal.
+--- Expected
++++ Actual
+@@ @@
+-'Drupal\Core\Field\FieldItemListfoo'
++'Drupal\Core\Field\FieldItemList'
+
+/var/www/lab01/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php:51</failure>
+ </testcase>
+ <testcase name="testGetClass with data set &quot;String (overridden class)&quot;" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php" line="43" class="Drupal\KernelTests\Core\Field\Entity\BaseFieldOverrideTest" classname="Drupal.KernelTests.Core.Field.Entity.BaseFieldOverrideTest" assertions="1" time="0.821283">
+ <failure type="PHPUnit\Framework\ExpectationFailedException">Drupal\KernelTests\Core\Field\Entity\BaseFieldOverrideTest::testGetClass with data set "String (overridden class)"
+Failed asserting that two strings are equal.
+--- Expected
++++ Actual
+@@ @@
+-'Drupal\KernelTests\Core\Field\Entity\BaseFieldOverrideTestfoo'
++'Drupal\KernelTests\Core\Field\Entity\BaseFieldOverrideTest'
+
+/var/www/lab01/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php:51</failure>
+ </testcase>
+ </testsuite>
+ <testcase name="testDefaultValueCallback" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php" line="75" class="Drupal\KernelTests\Core\Field\Entity\BaseFieldOverrideTest" classname="Drupal.KernelTests.Core.Field.Entity.BaseFieldOverrideTest" assertions="0" time="0.837052">
+ <error type="TypeError">Drupal\KernelTests\Core\Field\Entity\BaseFieldOverrideTest::testDefaultValueCallback
+TypeError: call_user_func(): Argument #1 ($callback) must be a valid callback, class Drupal\KernelTests\Core\Field\Entity\BaseFieldOverrideTest does not have a method "defaultValueCallbackPrimitiveBar"
+
+/var/www/lab01/core/lib/Drupal/Core/Field/BaseFieldDefinition.php:442
+/var/www/lab01/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php:83</error>
+ </testcase>
+ <testcase name="testInheritedProperties" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php" line="95" class="Drupal\KernelTests\Core\Field\Entity\BaseFieldOverrideTest" classname="Drupal.KernelTests.Core.Field.Entity.BaseFieldOverrideTest" assertions="5" time="0.817925"/>
+ </testsuite>
+</testsuites>
diff --git a/core/tests/fixtures/phpunit_skipped.xml b/core/tests/fixtures/phpunit_skipped.xml
new file mode 100644
index 00000000000..4a8311f5f7a
--- /dev/null
+++ b/core/tests/fixtures/phpunit_skipped.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuites>
+ <testsuite name="Drupal\KernelTests\Core\Image\ToolkitGdTest" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" tests="93" assertions="1167" errors="0" failures="0" skipped="5" time="88.994903">
+ <testsuite name="Drupal\KernelTests\Core\Image\ToolkitGdTest::testManipulations" tests="80" assertions="1104" errors="0" failures="0" skipped="0" time="76.846621">
+ <testcase name="testManipulations with data set #0" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.976747"/>
+ <testcase name="testManipulations with data set #1" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.944626"/>
+ <testcase name="testManipulations with data set #2" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.980525"/>
+ <testcase name="testManipulations with data set #3" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.947471"/>
+ <testcase name="testManipulations with data set #4" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.938293"/>
+ <testcase name="testManipulations with data set #5" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.939534"/>
+ <testcase name="testManipulations with data set #6" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.940386"/>
+ <testcase name="testManipulations with data set #7" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.934696"/>
+ <testcase name="testManipulations with data set #8" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.943265"/>
+ <testcase name="testManipulations with data set #9" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.941971"/>
+ <testcase name="testManipulations with data set #10" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.936005"/>
+ <testcase name="testManipulations with data set #11" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="12" time="1.016108"/>
+ <testcase name="testManipulations with data set #12" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="4" time="1.071908"/>
+ <testcase name="testManipulations with data set #13" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="1.022994"/>
+ <testcase name="testManipulations with data set #14" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.983351"/>
+ <testcase name="testManipulations with data set #15" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.991556"/>
+ <testcase name="testManipulations with data set #16" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.979027"/>
+ <testcase name="testManipulations with data set #17" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="1.039585"/>
+ <testcase name="testManipulations with data set #18" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.991826"/>
+ <testcase name="testManipulations with data set #19" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.940721"/>
+ <testcase name="testManipulations with data set #20" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.935326"/>
+ <testcase name="testManipulations with data set #21" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.954192"/>
+ <testcase name="testManipulations with data set #22" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.932164"/>
+ <testcase name="testManipulations with data set #23" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.931443"/>
+ <testcase name="testManipulations with data set #24" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.970216"/>
+ <testcase name="testManipulations with data set #25" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="1.588409"/>
+ <testcase name="testManipulations with data set #26" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="1.078304"/>
+ <testcase name="testManipulations with data set #27" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="12" time="1.032428"/>
+ <testcase name="testManipulations with data set #28" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="4" time="0.936722"/>
+ <testcase name="testManipulations with data set #29" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.941567"/>
+ <testcase name="testManipulations with data set #30" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.931417"/>
+ <testcase name="testManipulations with data set #31" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.933312"/>
+ <testcase name="testManipulations with data set #32" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.933431"/>
+ <testcase name="testManipulations with data set #33" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.928300"/>
+ <testcase name="testManipulations with data set #34" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.961680"/>
+ <testcase name="testManipulations with data set #35" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.932923"/>
+ <testcase name="testManipulations with data set #36" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.942173"/>
+ <testcase name="testManipulations with data set #37" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.925717"/>
+ <testcase name="testManipulations with data set #38" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.934281"/>
+ <testcase name="testManipulations with data set #39" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.924183"/>
+ <testcase name="testManipulations with data set #40" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.923672"/>
+ <testcase name="testManipulations with data set #41" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.972786"/>
+ <testcase name="testManipulations with data set #42" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.937621"/>
+ <testcase name="testManipulations with data set #43" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="12" time="0.934860"/>
+ <testcase name="testManipulations with data set #44" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="4" time="0.932447"/>
+ <testcase name="testManipulations with data set #45" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.929079"/>
+ <testcase name="testManipulations with data set #46" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.943529"/>
+ <testcase name="testManipulations with data set #47" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.935430"/>
+ <testcase name="testManipulations with data set #48" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.924625"/>
+ <testcase name="testManipulations with data set #49" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.931053"/>
+ <testcase name="testManipulations with data set #50" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.927283"/>
+ <testcase name="testManipulations with data set #51" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.926629"/>
+ <testcase name="testManipulations with data set #52" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.929970"/>
+ <testcase name="testManipulations with data set #53" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.930390"/>
+ <testcase name="testManipulations with data set #54" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.950040"/>
+ <testcase name="testManipulations with data set #55" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.930872"/>
+ <testcase name="testManipulations with data set #56" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.958764"/>
+ <testcase name="testManipulations with data set #57" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.935869"/>
+ <testcase name="testManipulations with data set #58" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.932261"/>
+ <testcase name="testManipulations with data set #59" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="12" time="0.930439"/>
+ <testcase name="testManipulations with data set #60" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="4" time="0.926069"/>
+ <testcase name="testManipulations with data set #61" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.966578"/>
+ <testcase name="testManipulations with data set #62" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.928829"/>
+ <testcase name="testManipulations with data set #63" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.933807"/>
+ <testcase name="testManipulations with data set #64" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.929979"/>
+ <testcase name="testManipulations with data set #65" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.926004"/>
+ <testcase name="testManipulations with data set #66" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.927559"/>
+ <testcase name="testManipulations with data set #67" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.932268"/>
+ <testcase name="testManipulations with data set #68" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.966589"/>
+ <testcase name="testManipulations with data set #69" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.930977"/>
+ <testcase name="testManipulations with data set #70" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="16" time="0.981415"/>
+ <testcase name="testManipulations with data set #71" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.936806"/>
+ <testcase name="testManipulations with data set #72" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="1.031318"/>
+ <testcase name="testManipulations with data set #73" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.940179"/>
+ <testcase name="testManipulations with data set #74" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="1.084237"/>
+ <testcase name="testManipulations with data set #75" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="12" time="0.937176"/>
+ <testcase name="testManipulations with data set #76" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="4" time="0.933190"/>
+ <testcase name="testManipulations with data set #77" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.934827"/>
+ <testcase name="testManipulations with data set #78" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.940150"/>
+ <testcase name="testManipulations with data set #79" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="287" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="14" time="0.932256"/>
+ </testsuite>
+ <testcase name="testSupportedExtensions" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="359" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="8" time="0.934511"/>
+ <testsuite name="Drupal\KernelTests\Core\Image\ToolkitGdTest::testGdFunctionsExist" tests="4" assertions="4" errors="0" failures="0" skipped="4" time="3.704495">
+ <testcase name="testGdFunctionsExist with data set #0" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="397" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="1" time="0.954038">
+ <skipped/>
+ </testcase>
+ <testcase name="testGdFunctionsExist with data set #1" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="397" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="1" time="0.917938">
+ <skipped/>
+ </testcase>
+ <testcase name="testGdFunctionsExist with data set #2" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="397" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="1" time="0.921161">
+ <skipped/>
+ </testcase>
+ <testcase name="testGdFunctionsExist with data set #3" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="397" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="1" time="0.911357">
+ <skipped/>
+ </testcase>
+ </testsuite>
+ <testsuite name="Drupal\KernelTests\Core\Image\ToolkitGdTest::testCreateImageFromScratch" tests="4" assertions="40" errors="0" failures="0" skipped="0" time="3.750441">
+ <testcase name="testCreateImageFromScratch with data set #0" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="409" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="10" time="0.926113"/>
+ <testcase name="testCreateImageFromScratch with data set #1" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="409" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="10" time="0.927924"/>
+ <testcase name="testCreateImageFromScratch with data set #2" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="409" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="10" time="0.925613"/>
+ <testcase name="testCreateImageFromScratch with data set #3" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="409" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="10" time="0.970791"/>
+ </testsuite>
+ <testcase name="testCreateNewFailures" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="437" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="5" time="0.924227"/>
+ <testcase name="testGifTransparentImages" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="452" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="1" time="0.951413">
+ <skipped/>
+ </testcase>
+ <testcase name="testMissingOperation" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="506" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="3" time="0.935700"/>
+ <testcase name="testGetRequirements" file="/var/www/lab01/core/tests/Drupal/KernelTests/Core/Image/ToolkitGdTest.php" line="518" class="Drupal\KernelTests\Core\Image\ToolkitGdTest" classname="Drupal.KernelTests.Core.Image.ToolkitGdTest" assertions="2" time="0.947495"/>
+ </testsuite>
+</testsuites>