Skip to content

Commit 2477a3e

Browse files
🚨 Add tests for fixer
1 parent 9234aff commit 2477a3e

File tree

3 files changed

+44
-11
lines changed

3 files changed

+44
-11
lines changed

TwigCS/Runner/Linter.php

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,7 @@ public function run(array $files, Ruleset $ruleset, bool $fix = false)
5757
$report = new Report();
5858

5959
if ($fix) {
60-
$fixer = new Fixer($ruleset, $this->tokenizer);
61-
62-
foreach ($ruleset->getSniffs() as $sniff) {
63-
$sniff->enableFixer($fixer);
64-
}
65-
66-
foreach ($files as $file) {
67-
$fixer->fixFile($file);
68-
file_put_contents($file, $fixer->getContents());
69-
}
60+
$this->fix($files, $ruleset);
7061
}
7162

7263
foreach ($ruleset->getSniffs() as $sniff) {
@@ -92,6 +83,31 @@ public function run(array $files, Ruleset $ruleset, bool $fix = false)
9283
return $report;
9384
}
9485

86+
/**
87+
* @param array $files
88+
* @param Ruleset $ruleset
89+
*
90+
* @throws Exception
91+
*/
92+
public function fix(array $files, Ruleset $ruleset)
93+
{
94+
$fixer = new Fixer($ruleset, $this->tokenizer);
95+
96+
foreach ($ruleset->getSniffs() as $sniff) {
97+
$sniff->enableFixer($fixer);
98+
}
99+
100+
foreach ($files as $file) {
101+
$success = $fixer->fixFile($file);
102+
103+
if (!$success) {
104+
throw new Exception("Cannot fix the file $file.");
105+
}
106+
107+
file_put_contents($file, $fixer->getContents());
108+
}
109+
}
110+
95111
/**
96112
* Checks one template against the set of rules.
97113
*

TwigCS/Tests/AbstractSniffTest.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use TwigCS\Environment\StubbedEnvironment;
99
use TwigCS\Report\SniffViolation;
1010
use TwigCS\Ruleset\Ruleset;
11+
use TwigCS\Runner\Fixer;
1112
use TwigCS\Runner\Linter;
1213
use TwigCS\Sniff\SniffInterface;
1314
use TwigCS\Token\Tokenizer;
@@ -45,9 +46,12 @@ abstract public function testSniff();
4546
protected function checkGenericSniff(SniffInterface $sniff, array $expects)
4647
{
4748
$ruleset = new Ruleset();
49+
$fixer = new Fixer($ruleset, new Tokenizer($this->env));
50+
4851
try {
4952
$class = new ReflectionClass(get_called_class());
50-
$file = __DIR__.'/Fixtures/'.$class->getShortName().'.twig';
53+
$className = $class->getShortName();
54+
$file = __DIR__.'/Fixtures/'.$className.'.twig';
5155

5256
$ruleset->addSniff($sniff);
5357
$report = $this->lint->run([$file], $ruleset);
@@ -68,5 +72,16 @@ protected function checkGenericSniff(SniffInterface $sniff, array $expects)
6872

6973
$this->assertEquals($expects, $messagePositions);
7074
}
75+
76+
$fixedFile = __DIR__.'/Fixtures/'.$className.'.fixed.twig';
77+
if (file_exists($fixedFile)) {
78+
$sniff->enableFixer($fixer);
79+
$fixer->fixFile($file);
80+
81+
$diff = $fixer->generateDiff($fixedFile);
82+
if ("" !== $diff) {
83+
$this->fail($diff);
84+
}
85+
}
7186
}
7287
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<div class="error">
2+
</div>

0 commit comments

Comments
 (0)