forked from PHP-CS-Fixer/PHP-CS-Fixer
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTextDiffTest.php
104 lines (92 loc) · 3.1 KB
/
TextDiffTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace PhpCsFixer\Tests;
use PhpCsFixer\Console\Command\FixCommand;
use PhpCsFixer\Report\ReporterFactory;
use PhpCsFixer\ToolInfo;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Tester\CommandTester;
/**
* @author SpacePossum
*
* @internal
*
* @coversNothing
* @group covers-nothing
*/
final class TextDiffTest extends TestCase
{
/**
* @param string $expected
* @param string $format
* @param bool $isDecorated
*
* @dataProvider provideDiffReportingCases
*/
public function testDiffReportingDecorated($expected, $format, $isDecorated)
{
$command = new FixCommand(new ToolInfo());
$commandTester = new CommandTester($command);
$commandTester->execute(
[
'path' => [__DIR__.'/Fixtures/FixCommand/TextDiffTestInput.php'],
'--diff' => true,
'--dry-run' => true,
'--format' => $format,
'--rules' => 'cast_spaces',
'--using-cache' => 'no',
],
[
'decorated' => $isDecorated,
'verbosity' => OutputInterface::VERBOSITY_NORMAL,
]
);
if ($isDecorated !== $commandTester->getOutput()->isDecorated()) {
static::markTestSkipped(sprintf('Output should %sbe decorated.', $isDecorated ? '' : 'not '));
}
if ($isDecorated !== $commandTester->getOutput()->getFormatter()->isDecorated()) {
static::markTestSkipped(sprintf('Formatter should %sbe decorated.', $isDecorated ? '' : 'not '));
}
static::assertStringMatchesFormat($expected, $commandTester->getDisplay(false));
}
public function provideDiffReportingCases()
{
$expected = <<<'TEST'
%A$output->writeln('<error>'.(int)$output.'</error>');%A
%A$output->writeln('<error>'.(int) $output.'</error>');%A
%A$output->writeln('<error> TEST </error>');%A
%A$output->writeln('<error>'.(int)$output.'</error>');%A
%A$output->writeln('<error>'.(int) $output.'</error>');%A
TEST;
$cases = [];
foreach (['txt', 'xml', 'junit'] as $format) {
$cases[] = [$expected, $format, true];
$cases[] = [$expected, $format, false];
}
$expected = substr(json_encode($expected), 1, -1);
$cases[] = [$expected, 'json', true];
$cases[] = [$expected, 'json', false];
return $cases;
}
/**
* Test to make sure @see TextDiffTest::provideDiffReportingCases covers all formats.
*/
public function testAllFormatsCovered()
{
$factory = ReporterFactory::create();
$formats = $factory->registerBuiltInReporters()->getFormats();
sort($formats);
static::assertSame(
['checkstyle', 'gitlab', 'json', 'junit', 'txt', 'xml'],
$formats
);
}
}