summaryrefslogtreecommitdiff
path: root/vendor/phpunit/phpunit/src/Util/XmlTestListRenderer.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/phpunit/phpunit/src/Util/XmlTestListRenderer.php')
-rw-r--r--vendor/phpunit/phpunit/src/Util/XmlTestListRenderer.php90
1 files changed, 90 insertions, 0 deletions
diff --git a/vendor/phpunit/phpunit/src/Util/XmlTestListRenderer.php b/vendor/phpunit/phpunit/src/Util/XmlTestListRenderer.php
new file mode 100644
index 000000000..d92e1fe26
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/XmlTestListRenderer.php
@@ -0,0 +1,90 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use function get_class;
+use function implode;
+use function str_replace;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Runner\PhptTestCase;
+use RecursiveIteratorIterator;
+use XMLWriter;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class XmlTestListRenderer
+{
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function render(TestSuite $suite): string
+ {
+ $writer = new XMLWriter;
+
+ $writer->openMemory();
+ $writer->setIndent(true);
+ $writer->startDocument();
+ $writer->startElement('tests');
+
+ $currentTestCase = null;
+
+ foreach (new RecursiveIteratorIterator($suite->getIterator()) as $test) {
+ if ($test instanceof TestCase) {
+ if (get_class($test) !== $currentTestCase) {
+ if ($currentTestCase !== null) {
+ $writer->endElement();
+ }
+
+ $writer->startElement('testCaseClass');
+ $writer->writeAttribute('name', get_class($test));
+
+ $currentTestCase = get_class($test);
+ }
+
+ $writer->startElement('testCaseMethod');
+ $writer->writeAttribute('name', $test->getName(false));
+ $writer->writeAttribute('groups', implode(',', $test->getGroups()));
+
+ if (!empty($test->getDataSetAsString(false))) {
+ $writer->writeAttribute(
+ 'dataSet',
+ str_replace(
+ ' with data set ',
+ '',
+ $test->getDataSetAsString(false)
+ )
+ );
+ }
+
+ $writer->endElement();
+ } elseif ($test instanceof PhptTestCase) {
+ if ($currentTestCase !== null) {
+ $writer->endElement();
+
+ $currentTestCase = null;
+ }
+
+ $writer->startElement('phptFile');
+ $writer->writeAttribute('path', $test->getName());
+ $writer->endElement();
+ }
+ }
+
+ if ($currentTestCase !== null) {
+ $writer->endElement();
+ }
+
+ $writer->endElement();
+
+ return $writer->outputMemory();
+ }
+}