prepareString() public static method

Author: Kore Nordmann (mail@kore-nordmann.de)
public static prepareString ( string $string ) : string
$string string
return string
Exemplo n.º 1
0
 /**
  * @dataProvider charProvider
  */
 public function testPrepareString($char)
 {
     $e = null;
     $escapedString = PHPUnit_Util_XML::prepareString($char);
     $xml = "<?xml version='1.0' encoding='UTF-8' ?><tag>{$escapedString}</tag>";
     $dom = new DomDocument('1.0', 'UTF-8');
     try {
         $dom->loadXML($xml);
     } catch (Exception $e) {
     }
     $this->assertNull($e, sprintf('PHPUnit_Util_XML::prepareString("\\x%02x") should not crash DomDocument', ord($char)));
 }
Exemplo n.º 2
0
 /**
  * Method which generalizes addError() and addFailure()
  *
  * @param PHPUnit_Framework_Test $test
  * @param Exception              $e
  * @param float                  $time
  * @param string                 $type
  */
 private function doAddFault(PHPUnit_Framework_Test $test, Exception $e, $time, $type)
 {
     if ($this->currentTestCase === null) {
         return;
     }
     if ($test instanceof PHPUnit_Framework_SelfDescribing) {
         $buffer = $test->toString() . "\n";
     } else {
         $buffer = '';
     }
     $buffer .= PHPUnit_Framework_TestFailure::exceptionToString($e) . "\n" . PHPUnit_Util_Filter::getFilteredStacktrace($e);
     $fault = $this->document->createElement($type, PHPUnit_Util_XML::prepareString($buffer));
     $fault->setAttribute('type', get_class($e));
     $this->currentTestCase->appendChild($fault);
 }
Exemplo n.º 3
0
 /**
  * Skipped test.
  *
  * @param PHPUnit_Framework_Test $test
  * @param Exception              $e
  * @param float                  $time
  * @since  Method available since Release 3.0.0
  */
 public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
 {
     if ($this->logIncompleteSkipped && $this->currentTestCase !== null) {
         $error = $this->document->createElement('error', PHPUnit_Util_XML::prepareString("Skipped Test\n" . PHPUnit_Util_Filter::getFilteredStacktrace($e)));
         $error->setAttribute('type', get_class($e));
         $this->currentTestCase->appendChild($error);
         $this->testSuiteErrors[$this->testSuiteLevel]++;
     } else {
         $this->attachCurrentTestCase = false;
     }
 }
Exemplo n.º 4
0
 /**
  * @param  PHPUnit_Framework_TestResult $result
  */
 public function process(PHPUnit_Framework_TestResult $result, $minLines = 5, $minMatches = 70)
 {
     $codeCoverage = $result->getCodeCoverageInformation();
     $summary = PHPUnit_Util_CodeCoverage::getSummary($codeCoverage);
     $files = array_keys($summary);
     $metrics = new PHPUnit_Util_Metrics_Project($files, $summary, TRUE, $minLines, $minMatches);
     $document = new DOMDocument('1.0', 'UTF-8');
     $document->formatOutput = TRUE;
     $cpd = $document->createElement('pmd-cpd');
     $cpd->setAttribute('version', 'PHPUnit ' . PHPUnit_Runner_Version::id());
     $document->appendChild($cpd);
     foreach ($metrics->getDuplicates() as $duplicate) {
         $xmlDuplication = $cpd->appendChild($document->createElement('duplication'));
         $xmlDuplication->setAttribute('lines', $duplicate['numLines']);
         $xmlDuplication->setAttribute('tokens', $duplicate['numTokens']);
         $xmlFile = $xmlDuplication->appendChild($document->createElement('file'));
         $xmlFile->setAttribute('path', $duplicate['fileA']->getPath());
         $xmlFile->setAttribute('line', $duplicate['firstLineA']);
         $xmlFile = $xmlDuplication->appendChild($document->createElement('file'));
         $xmlFile->setAttribute('path', $duplicate['fileB']->getPath());
         $xmlFile->setAttribute('line', $duplicate['firstLineB']);
         $xmlDuplication->appendChild($document->createElement('codefragment', PHPUnit_Util_XML::prepareString(join('', array_slice($duplicate['fileA']->getLines(), $duplicate['firstLineA'] - 1, $duplicate['numLines'])))));
     }
     $this->write($document->saveXML());
     $this->flush();
 }
Exemplo n.º 5
0
 public function testPrepareStringEscapesChars()
 {
     $this->assertEquals('&#x1b;', PHPUnit_Util_XML::prepareString(""));
 }
Exemplo n.º 6
0
 /**
  * @param  PHPUnit_Framework_TestResult $result
  */
 public function process(PHPUnit_Framework_TestResult $result)
 {
     $sutData = $result->getCodeCoverageInformation();
     $sutFiles = PHPUnit_Util_CodeCoverage::getSummary($sutData, TRUE);
     $allData = $result->getCodeCoverageInformation(FALSE);
     $allFiles = PHPUnit_Util_CodeCoverage::getSummary($allData, TRUE);
     $testFiles = array_diff(array_keys($allFiles), array_keys($sutFiles));
     foreach (array_keys($allFiles) as $key) {
         if (!in_array($key, $testFiles)) {
             unset($allFiles[$key]);
         }
     }
     $allCommonPath = PHPUnit_Util_Filesystem::reducePaths($allFiles);
     $sutCommonPath = PHPUnit_Util_Filesystem::reducePaths($sutFiles);
     $testFiles = $allFiles;
     unset($allData);
     unset($allFiles);
     unset($sutData);
     $testToCoveredLinesMap = array();
     $time = time();
     foreach ($sutFiles as $filename => $data) {
         $fullPath = $sutCommonPath . DIRECTORY_SEPARATOR . $filename;
         if (file_exists($fullPath)) {
             $fullPath = realpath($fullPath);
             $document = new DOMDocument('1.0', 'UTF-8');
             $document->formatOutput = TRUE;
             $coveredFile = $document->createElement('coveredFile');
             $coveredFile->setAttribute('fullPath', $fullPath);
             $coveredFile->setAttribute('shortenedPath', $filename);
             $coveredFile->setAttribute('generated', $time);
             $coveredFile->setAttribute('phpunit', PHPUnit_Runner_Version::id());
             $document->appendChild($coveredFile);
             $lines = file($fullPath, FILE_IGNORE_NEW_LINES);
             $lineNum = 1;
             foreach ($lines as $line) {
                 if (isset($data[$lineNum])) {
                     if (is_array($data[$lineNum])) {
                         $count = count($data[$lineNum]);
                     } else {
                         $count = $data[$lineNum];
                     }
                 } else {
                     $count = -3;
                 }
                 $xmlLine = $coveredFile->appendChild($document->createElement('line'));
                 $xmlLine->setAttribute('lineNumber', $lineNum);
                 $xmlLine->setAttribute('executed', $count);
                 $xmlLine->appendChild($document->createElement('body', PHPUnit_Util_XML::prepareString($line)));
                 if (isset($data[$lineNum]) && is_array($data[$lineNum])) {
                     $xmlTests = $document->createElement('tests');
                     $xmlLine->appendChild($xmlTests);
                     foreach ($data[$lineNum] as $test) {
                         $xmlTest = $xmlTests->appendChild($document->createElement('test'));
                         if ($test instanceof PHPUnit_Framework_TestCase) {
                             $xmlTest->setAttribute('name', $test->getName());
                             $xmlTest->setAttribute('status', $test->getStatus());
                             if ($test->hasFailed()) {
                                 $xmlTest->appendChild($document->createElement('message', PHPUnit_Util_XML::prepareString($test->getStatusMessage())));
                             }
                             $class = new ReflectionClass($test);
                             $testFullPath = $class->getFileName();
                             $testShortenedPath = str_replace($allCommonPath, '', $testFullPath);
                             $methodName = $test->getName(FALSE);
                             if ($class->hasMethod($methodName)) {
                                 $method = $class->getMethod($methodName);
                                 $startLine = $method->getStartLine();
                                 $xmlTest->setAttribute('class', $class->getName());
                                 $xmlTest->setAttribute('fullPath', $testFullPath);
                                 $xmlTest->setAttribute('shortenedPath', $testShortenedPath);
                                 $xmlTest->setAttribute('line', $startLine);
                                 if (!isset($testToCoveredLinesMap[$testFullPath][$startLine])) {
                                     $testToCoveredLinesMap[$testFullPath][$startLine] = array();
                                 }
                                 if (!isset($testToCoveredLinesMap[$testFullPath][$startLine][$fullPath])) {
                                     $testToCoveredLinesMap[$testFullPath][$startLine][$fullPath] = array('coveredLines' => array($lineNum), 'shortenedPath' => $filename);
                                 } else {
                                     $testToCoveredLinesMap[$testFullPath][$startLine][$fullPath]['coveredLines'][] = $lineNum;
                                 }
                             }
                         }
                     }
                 }
                 $lineNum++;
             }
             $document->save(sprintf('%s%s.xml', $this->directory, PHPUnit_Util_Filesystem::getSafeFilename(basename($filename))));
         }
     }
     foreach ($testFiles as $filename => $data) {
         $fullPath = $allCommonPath . DIRECTORY_SEPARATOR . $filename;
         if (file_exists($fullPath)) {
             $document = new DOMDocument('1.0', 'UTF-8');
             $document->formatOutput = TRUE;
             $testFile = $document->createElement('testFile');
             $testFile->setAttribute('fullPath', $fullPath);
             $testFile->setAttribute('shortenedPath', $filename);
             $testFile->setAttribute('generated', $time);
             $testFile->setAttribute('phpunit', PHPUnit_Runner_Version::id());
             $document->appendChild($testFile);
             $lines = file($fullPath, FILE_IGNORE_NEW_LINES);
             $lineNum = 1;
             foreach ($lines as $line) {
                 $xmlLine = $testFile->appendChild($document->createElement('line'));
                 $xmlLine->setAttribute('lineNumber', $lineNum);
                 $xmlLine->appendChild($document->createElement('body', PHPUnit_Util_XML::prepareString($line)));
                 if (isset($testToCoveredLinesMap[$fullPath][$lineNum])) {
                     $xmlCoveredFiles = $xmlLine->appendChild($document->createElement('coveredFiles'));
                     foreach ($testToCoveredLinesMap[$fullPath][$lineNum] as $coveredFileFullPath => $coveredFileData) {
                         $xmlCoveredFile = $xmlCoveredFiles->appendChild($document->createElement('coveredFile'));
                         $xmlCoveredFile->setAttribute('fullPath', $fullPath);
                         $xmlCoveredFile->setAttribute('shortenedPath', $coveredFileData['shortenedPath']);
                         foreach ($coveredFileData['coveredLines'] as $coveredLineNum) {
                             $xmlCoveredLine = $xmlCoveredFile->appendChild($document->createElement('coveredLine', $coveredLineNum));
                         }
                     }
                 }
                 $lineNum++;
             }
             $document->save(sprintf('%s%s.xml', $this->directory, PHPUnit_Util_Filesystem::getSafeFilename(basename($filename))));
         }
     }
 }