/** * @depends testPhpCsAvailability */ public function testRule() { $invoker = new \Magento\TestFramework\Utility\AggregateInvoker($this); $invoker(function ($inputFile, $expectedResultFile) { $expectedXml = simplexml_load_file($expectedResultFile); // rule is not implemented $elements = $expectedXml->xpath('/config/incomplete'); if ($elements) { $message = (string) $elements[0]; $this->markTestIncomplete("Rule for the fixture '{$inputFile}' is not implemented. {$message}"); } // run additional methods before making test $elements = $expectedXml->xpath('/config/run'); foreach ($elements as $element) { $method = (string) $element->attributes()->method; $this->{$method}(); } self::$_cmd->run(array($inputFile)); $resultXml = simplexml_load_file(self::$_reportFile); $this->_assertTotalErrorsAndWarnings($resultXml, $expectedXml); $this->_assertErrors($resultXml, $expectedXml); $this->_assertWarnings($resultXml, $expectedXml); // verify that there has been at least one assertion performed if ($this->getCount() == 0) { $this->fail("Broken test: there has no assertions been performed for the fixture '{$inputFile}'."); } }, $this->ruleDataProvider()); }
public function testRun() { $whiteList = ['test' . rand(), 'test' . rand()]; $extensions = ['test' . rand(), 'test' . rand()]; $this->_wrapper->expects($this->once())->method('getDefaults')->will($this->returnValue([])); $expectedCliEmulation = ['files' => $whiteList, 'standard' => [self::RULE_SET], 'extensions' => $extensions, 'reportFile' => self::REPORT_FILE, 'warningSeverity' => 0, 'reports' => ['checkstyle' => null]]; $this->_tool->setExtensions($extensions); $this->_wrapper->expects($this->once())->method('setValues')->with($this->equalTo($expectedCliEmulation)); $this->_wrapper->expects($this->once())->method('process'); $this->_tool->run($whiteList); }
/** * Run the magento specific coding standards on the code * * @return void */ public function testCodeStyle() { $reportFile = self::$reportDir . '/less_report.txt'; $wrapper = new LessWrapper(); $codeSniffer = new CodeSniffer(realpath(__DIR__ . '/_files/lesscs'), $reportFile, $wrapper); if (!$codeSniffer->canRun()) { $this->markTestSkipped('PHP Code Sniffer is not installed.'); } $codeSniffer->setExtensions([LessWrapper::LESS_FILE_EXTENSION]); $fileList = PHPCodeTest::getWhitelist([LessWrapper::LESS_FILE_EXTENSION], __DIR__, __DIR__); $result = $codeSniffer->run($this->filterFiles($fileList)); $this->assertEquals(0, $result, "PHP Code Sniffer has found {$result} error(s): See detailed report in {$reportFile}"); }
/** * Run the annotations sniffs on the code * * @return void * @todo Combine with normal code style at some point. */ public function testAnnotationStandard() { $reportFile = self::$reportDir . '/phpcs_annotations_report.txt'; $wrapper = new Wrapper(); $codeSniffer = new CodeSniffer(realpath(__DIR__ . '/../../../../framework/Magento/ruleset.xml'), $reportFile, $wrapper); if (!$codeSniffer->canRun()) { $this->markTestSkipped('PHP Code Sniffer is not installed.'); } $result = $codeSniffer->run(self::getWhitelist(['php'])); $output = ""; if (file_exists($reportFile)) { $output = file_get_contents($reportFile); } $this->assertEquals(0, $result, "PHP Code Sniffer has found {$result} error(s): " . PHP_EOL . $output); }
/** * Run the annotations sniffs on the code * * @return void * @todo Combine with normal code style at some point. */ public function testAnnotationStandard() { $reportFile = self::$reportDir . '/phpcs_annotations_report.xml'; $wrapper = new Wrapper(); $codeSniffer = new CodeSniffer(realpath(__DIR__ . '/../../../../framework/Magento/ruleset.xml'), $reportFile, $wrapper); if (!$codeSniffer->canRun()) { $this->markTestSkipped('PHP Code Sniffer is not installed.'); } self::setupFileLists('phpcs'); $severity = 0; // Change to 5 to see the warnings $this->assertEquals(0, $result = $codeSniffer->run(self::$whiteList, self::$blackList, array('php'), $severity), "PHP Code Sniffer has found {$result} error(s): See detailed report in {$reportFile}"); }
/** * Run the annotations sniffs on the code * * @return void * @todo Combine with normal code style at some point. */ public function testAnnotationStandard() { $reportFile = self::$reportDir . '/phpcs_annotations_report.xml'; $warningSeverity = 5; $wrapper = new Wrapper(); $codeSniffer = new CodeSniffer(realpath(__DIR__ . '/../../../../framework/Magento/ruleset.xml'), $reportFile, $wrapper); if (!$codeSniffer->canRun()) { $this->markTestSkipped('PHP Code Sniffer is not installed.'); } self::setupFileLists('phpcs'); // Scan for error amount $result = $codeSniffer->run(self::$whiteList, self::$blackList, array('php'), 0); // Rescan to generate report with warnings. $codeSniffer->run(self::$whiteList, self::$blackList, array('php'), $warningSeverity); // Fail if there are errors in report. $this->assertEquals(0, $result, "PHP Code Sniffer has found {$result} error(s): See detailed report in {$reportFile}"); }