FEATURE: Also enable testing phpcbf
* Add diff to test actual fixes. Relates: #46
This commit is contained in:
parent
1b309bd709
commit
7c35998c62
3 changed files with 77 additions and 25 deletions
|
@ -0,0 +1,14 @@
|
|||
--- tests/Fixtures/Standards/Typo3Update/Sniffs/LegacyClassnames/DocCommentSniff/InputFileForIssues.php
|
||||
+++ PHP_CodeSniffer
|
||||
@@ -22,9 +22,9 @@
|
||||
class InputFileForIssues
|
||||
{
|
||||
/**
|
||||
- * @param t3lib_div
|
||||
+ * @param \TYPO3\CMS\Core\Utility\GeneralUtility
|
||||
*
|
||||
- * @return Tx_Extbase_Configuration_Configurationmanager
|
||||
+ * @return \TYPO3\CMS\Extbase\Configuration\ConfigurationManager
|
||||
*/
|
||||
public function doSomething($something)
|
||||
{
|
|
@ -64,12 +64,45 @@ class SniffsTest extends TestCase
|
|||
protected function executeSniff(SplFileInfo $folder)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$this->getExpectedOutput($folder),
|
||||
$this->getOutput($folder)['output'],
|
||||
$this->getExpectedJsonOutput($folder),
|
||||
$this->getOutput($folder, 'json')['output'],
|
||||
'Sniff ' . $this->getSniffByFolder($folder)
|
||||
. ' did not produce expected output for input file '
|
||||
. $this->getExpectedOutputFile($folder)
|
||||
. $this->getInputFile($folder)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
$this->getExpectedDiffOutput($folder),
|
||||
$this->getOutput($folder, 'diff')['output'],
|
||||
'Sniff ' . $this->getSniffByFolder($folder)
|
||||
. ' did not produce expected diff for input file '
|
||||
. $this->getInputFile($folder)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get expected json output for comparison.
|
||||
*
|
||||
* @param SplFileInfo $folder
|
||||
* @return array
|
||||
*/
|
||||
protected function getExpectedJsonOutput(SplFileInfo $folder)
|
||||
{
|
||||
return json_decode(
|
||||
file_get_contents($folder->getRealPath() . DIRECTORY_SEPARATOR . 'Expected.json'),
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns absolute file path to diff file containing expected output.
|
||||
*
|
||||
* @param SplFileInfo $folder
|
||||
* @return string
|
||||
*/
|
||||
protected function getExpectedDiffOutput(SplFileInfo $folder)
|
||||
{
|
||||
return file_get_contents($folder->getRealPath() . DIRECTORY_SEPARATOR . 'Expected.diff');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -81,57 +114,51 @@ class SniffsTest extends TestCase
|
|||
protected function getSniffByFolder(SplFileInfo $folder)
|
||||
{
|
||||
$folderParts = explode(DIRECTORY_SEPARATOR, $folder->getPath());
|
||||
|
||||
return array_slice($folderParts, -3)[0]
|
||||
. '.' . array_slice($folderParts, -1)[0]
|
||||
. '.' . substr($folder->getFilename(), 0, -5);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns absolute file path to json file containing expected output.
|
||||
* Returns file to use as input for phpcs.
|
||||
*
|
||||
* @param SplFileInfo $folder
|
||||
* @return string
|
||||
*/
|
||||
protected function getExpectedOutputFile(SplFileInfo $folder)
|
||||
protected function getInputFile(SplFileInfo $folder)
|
||||
{
|
||||
return $folder->getRealPath() . DIRECTORY_SEPARATOR . 'ExpectedOutputForIssues.json';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get expected output for comparison.
|
||||
*
|
||||
* @param SplFileInfo $folder
|
||||
* @return array
|
||||
*/
|
||||
protected function getExpectedOutput(SplFileInfo $folder)
|
||||
{
|
||||
return json_decode(
|
||||
file_get_contents($this->getExpectedOutputFile($folder)),
|
||||
true
|
||||
);
|
||||
return $folder->getRealPath() . DIRECTORY_SEPARATOR . 'InputFileForIssues.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes phpcs for sniff based on $folder and returns the generated output.
|
||||
*
|
||||
* @param SplFileInfo $folder
|
||||
* @param string $report Defined the report format to use for output.
|
||||
* @return array
|
||||
*/
|
||||
protected function getOutput(SplFileInfo $folder)
|
||||
protected function getOutput(SplFileInfo $folder, $report)
|
||||
{
|
||||
$bin = './vendor/bin/phpcs';
|
||||
$arguments = '--sniffs=' . $this->getSniffByFolder($folder)
|
||||
. ' --report=json'
|
||||
. ' --report=' . $report
|
||||
. ' '
|
||||
. $folder->getRealPath() . DIRECTORY_SEPARATOR . 'InputFileForIssues.php'
|
||||
. $this->getInputFile($folder)
|
||||
;
|
||||
$output = '';
|
||||
$returnValue;
|
||||
|
||||
exec($bin . ' ' . $arguments, $output, $returnValue);
|
||||
|
||||
if ($report === 'json') {
|
||||
$output = $this->prepareJsonOutput($output);
|
||||
} if ($report === 'diff') {
|
||||
$output = $this->prepareDiffOutput($output);
|
||||
}
|
||||
|
||||
return [
|
||||
'output' => $this->prepareOutput($output),
|
||||
'output' => $output,
|
||||
'returnValue' => $returnValue,
|
||||
];
|
||||
}
|
||||
|
@ -142,7 +169,7 @@ class SniffsTest extends TestCase
|
|||
* @param array $output
|
||||
* @return array
|
||||
*/
|
||||
protected function prepareOutput(array $output)
|
||||
protected function prepareJsonOutput(array $output)
|
||||
{
|
||||
$preparedOutput = json_decode($output[0], true);
|
||||
|
||||
|
@ -154,4 +181,15 @@ class SniffsTest extends TestCase
|
|||
|
||||
return $preparedOutput;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare phpcs output for comparison.
|
||||
*
|
||||
* @param array $output
|
||||
* @return string
|
||||
*/
|
||||
protected function prepareDiffOutput(array $output)
|
||||
{
|
||||
return implode("\n", $output);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue