Viewing file: XmlTestListRenderer.php (2.69 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php declare(strict_types=1); /* * This file is part of PHPUnit. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * * 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('1.0', 'UTF-8'); $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(); $writer->endDocument();
return $writer->outputMemory(); } }
|