* Dariusz Rumiński * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace PhpCsFixer\Tests\Console\Report\FixReport; use PhpCsFixer\Console\Application; use PhpCsFixer\Console\Report\FixReport\JunitReporter; use PhpCsFixer\Console\Report\FixReport\ReporterInterface; use PhpCsFixer\PhpunitConstraintXmlMatchesXsd\Constraint\XmlMatchesXsd; use Symfony\Component\Console\Formatter\OutputFormatter; /** * @author Boris Gorbylev * @author Dariusz Rumiński * * @internal * * @covers \PhpCsFixer\Console\Report\FixReport\JunitReporter */ final class JunitReporterTest extends AbstractReporterTestCase { /** * JUnit XML schema from Jenkins. * * @var null|string * * @see https://github.com/jenkinsci/xunit-plugin/blob/master/src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd */ private static $xsd; public static function setUpBeforeClass(): void { parent::setUpBeforeClass(); $content = file_get_contents(__DIR__.'/../../../../doc/schemas/fix/junit-10.xsd'); if (false === $content) { throw new \RuntimeException('Cannot read file.'); } self::$xsd = $content; } public static function tearDownAfterClass(): void { parent::tearDownAfterClass(); self::$xsd = null; } protected function getFormat(): string { return 'junit'; } protected static function createNoErrorReport(): string { $about = Application::getAbout(); return << XML; } protected static function createSimpleReport(): string { $about = Application::getAbout(); return << Wrong code style Diff: --------------- --- Original +++ New @@ -2,7 +2,7 @@ class Foo { - public function bar(\$foo = 1, \$bar) + public function bar(\$foo, \$bar) { } } XML; } protected static function createWithDiffReport(): string { $about = Application::getAbout(); return << XML; } protected static function createWithAppliedFixersReport(): string { $about = Application::getAbout(); return << applied fixers: --------------- * some_fixer_name_here_1 * some_fixer_name_here_2 XML; } protected static function createWithTimeAndMemoryReport(): string { $about = Application::getAbout(); return << Wrong code style Diff: --------------- --- Original +++ New @@ -2,7 +2,7 @@ class Foo { - public function bar(\$foo = 1, \$bar) + public function bar(\$foo, \$bar) { } } XML; } protected static function createComplexReport(): string { $about = Application::getAbout(); return << applied fixers: --------------- * some_fixer_name_here_1 * some_fixer_name_here_2 Diff: --------------- this text is a diff ;) applied fixers: --------------- * another_fixer_name_here Diff: --------------- another diff here ;) XML; } protected function assertFormat(string $expected, string $input): void { $formatter = new OutputFormatter(); $input = $formatter->format($input); self::assertThat($input, new XmlMatchesXsd(self::$xsd)); self::assertXmlStringEqualsXmlString($expected, $input); } protected function createReporter(): ReporterInterface { return new JunitReporter(); } }