PMDTest.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. use SebastianBergmann\PHPCPD\CodeClone;
  3. use SebastianBergmann\PHPCPD\CodeCloneFile;
  4. use SebastianBergmann\PHPCPD\CodeCloneMap;
  5. use SebastianBergmann\PHPCPD\Log\PMD;
  6. use PHPUnit\Framework\TestCase;
  7. class PHPCPD_Log_PMDTest extends TestCase
  8. {
  9. /** @var string */
  10. private $testFile1;
  11. /** @var @var string */
  12. private $testFile2;
  13. /** @var string */
  14. private $pmdLogFile;
  15. /** @var string */
  16. private $expectedPmdLogFile;
  17. /** @var \SebastianBergmann\PHPCPD\Log\PMD */
  18. private $pmdLogger;
  19. protected function setUp()
  20. {
  21. $this->testFile1 = __DIR__ . '/_files/with_ascii_escape.php';
  22. $this->testFile2 = __DIR__ . '/_files/with_ascii_escape2.php';
  23. $this->pmdLogFile = tempnam(sys_get_temp_dir(), 'pmd');
  24. $this->expectedPmdLogFile = tempnam(sys_get_temp_dir(), 'pmd');
  25. $expectedPmdLogTemplate = __DIR__ . '/_files/pmd_expected.xml';
  26. $expectedPmdLogContents = strtr(
  27. file_get_contents($expectedPmdLogTemplate),
  28. array(
  29. '%file1%' => $this->testFile1,
  30. '%file2%' => $this->testFile2
  31. )
  32. );
  33. file_put_contents($this->expectedPmdLogFile, $expectedPmdLogContents);
  34. $this->pmdLogger = new PMD($this->pmdLogFile);
  35. }
  36. protected function tearDown()
  37. {
  38. if (file_exists($this->pmdLogFile)) {
  39. unlink($this->pmdLogFile);
  40. }
  41. if (file_exists($this->expectedPmdLogFile)) {
  42. unlink($this->expectedPmdLogFile);
  43. }
  44. }
  45. /**
  46. * @covers SebastianBergmann\PHPCPD\Log\PMD
  47. * @covers SebastianBergmann\PHPCPD\Log\AbstractXmlLogger
  48. */
  49. public function testSubstitutesDisallowedCharacters()
  50. {
  51. $file1 = new CodeCloneFile($this->testFile1, 8);
  52. $file2 = new CodeCloneFile($this->testFile2, 8);
  53. $clone = new CodeClone($file1, $file2, 4, 4);
  54. $cloneMap = new CodeCloneMap();
  55. $cloneMap->addClone($clone);
  56. $this->pmdLogger->processClones($cloneMap);
  57. $this->assertXmlFileEqualsXmlFile(
  58. $this->expectedPmdLogFile,
  59. $this->pmdLogFile
  60. );
  61. }
  62. }