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
<?php
use SebastianBergmann\PHPCPD\CodeClone;
use SebastianBergmann\PHPCPD\CodeCloneFile;
use SebastianBergmann\PHPCPD\CodeCloneMap;
use SebastianBergmann\PHPCPD\Log\PMD;
use PHPUnit\Framework\TestCase;
class PHPCPD_Log_PMDTest extends TestCase
{
/** @var string */
private $testFile1;
/** @var @var string */
private $testFile2;
/** @var string */
private $pmdLogFile;
/** @var string */
private $expectedPmdLogFile;
/** @var \SebastianBergmann\PHPCPD\Log\PMD */
private $pmdLogger;
protected function setUp()
{
$this->testFile1 = __DIR__ . '/_files/with_ascii_escape.php';
$this->testFile2 = __DIR__ . '/_files/with_ascii_escape2.php';
$this->pmdLogFile = tempnam(sys_get_temp_dir(), 'pmd');
$this->expectedPmdLogFile = tempnam(sys_get_temp_dir(), 'pmd');
$expectedPmdLogTemplate = __DIR__ . '/_files/pmd_expected.xml';
$expectedPmdLogContents = strtr(
file_get_contents($expectedPmdLogTemplate),
array(
'%file1%' => $this->testFile1,
'%file2%' => $this->testFile2
)
);
file_put_contents($this->expectedPmdLogFile, $expectedPmdLogContents);
$this->pmdLogger = new PMD($this->pmdLogFile);
}
protected function tearDown()
{
if (file_exists($this->pmdLogFile)) {
unlink($this->pmdLogFile);
}
if (file_exists($this->expectedPmdLogFile)) {
unlink($this->expectedPmdLogFile);
}
}
/**
* @covers SebastianBergmann\PHPCPD\Log\PMD
* @covers SebastianBergmann\PHPCPD\Log\AbstractXmlLogger
*/
public function testSubstitutesDisallowedCharacters()
{
$file1 = new CodeCloneFile($this->testFile1, 8);
$file2 = new CodeCloneFile($this->testFile2, 8);
$clone = new CodeClone($file1, $file2, 4, 4);
$cloneMap = new CodeCloneMap();
$cloneMap->addClone($clone);
$this->pmdLogger->processClones($cloneMap);
$this->assertXmlFileEqualsXmlFile(
$this->expectedPmdLogFile,
$this->pmdLogFile
);
}
}