getRealPath() public method

public getRealPath ( )
Example #1
0
 public function testGetRealPath()
 {
     $this->given($adapter = new atoum\test\adapter())->and($adapter->realpath = function ($path) {
         switch ($path) {
             case '/an/invalid/path':
             case '/an/invalid':
             case '/an':
             case '/':
                 return false;
             case '/a/b/c/d/e':
             case '/a/b/c/d':
                 return false;
             case '/a/b/c':
                 return '/x/y/z';
             default:
                 return $path;
         }
     })->then->if($path = new testedClass('/a', '/', $adapter))->then->object($path->getRealPath())->isNotIdenticalTo($path)->toString->isEqualTo('/a')->if($path = new testedClass('/a/b/c', '/', $adapter))->then->object($path->getRealPath())->isNotIdenticalTo($path)->toString->isEqualTo('/x/y/z')->if($path = new testedClass('/a/b/c/d/e', '/', $adapter))->then->object($path->getRealPath())->isNotIdenticalTo($path)->toString->isEqualTo('/x/y/z/d/e')->if($path = new testedClass('/an/invalid/path', '/', $adapter))->then->exception(function () use($path) {
         $path->getRealPath();
     })->isInstanceOf('mageekguy\\atoum\\fs\\path\\exception')->hasMessage('Unable to get real path for \'' . $path . '\'');
 }
Example #2
0
 /**
  * @param array $classData
  * @param int   $relevantLines
  * @param int   $coveredLines
  * @param int   $totalLines
  * @param int   $coverage
  */
 protected function buildClassPage($classData, $relevantLines, $coveredLines, $totalLines, $coverage)
 {
     // get template
     $template = $this->templateParser->parseFile($this->templatesDirectory . DIRECTORY_SEPARATOR . 'class.tpl');
     // build common
     $this->buildCommonTemplate($template, array('totalLines' => $totalLines, 'relevantLines' => $relevantLines, 'coveredLines' => $coveredLines, 'coverage' => $coverage), $classData['coverage'], $classData['name']);
     $methodsTemplates = $template->methods;
     $methodTemplates = $methodsTemplates->method;
     $methodCoverageAvailableTemplates = $methodTemplates->methodCoverageAvailable;
     $methodCoverageUnavailableTemplates = $methodTemplates->methodCoverageUnavailable;
     $sourceFileTemplates = $template->sourceFile;
     $templates = array('lineTemplates' => $sourceFileTemplates->line, 'coveredLineTemplates' => $sourceFileTemplates->coveredLine, 'notCoveredLineTemplates' => $sourceFileTemplates->notCoveredLine);
     $className = $classData['className'];
     $template->className = $className;
     $methods = $this->coverage->getCoverageForClass($className);
     $reflectedMethods = array();
     $reflectionClassMethods = $this->getReflectionClass($className)->getMethods();
     foreach (array_filter($reflectionClassMethods, function ($reflectedMethod) use($className) {
         return $reflectedMethod->isAbstract() === false && $reflectedMethod->getDeclaringClass()->getName() === $className;
     }) as $reflectedMethod) {
         $reflectedMethods[$reflectedMethod->getName()] = $reflectedMethod;
     }
     if (sizeof($reflectedMethods) > 0) {
         foreach (array_intersect(array_keys($reflectedMethods), array_keys($methods)) as $methodName) {
             $methodCoverageValue = $this->coverage->getValueForMethod($className, $methodName);
             if ($methodCoverageValue === null) {
                 $methodCoverageUnavailableTemplates->build(array('methodName' => $methodName));
             } else {
                 $methodCoverageAvailableTemplates->build(array('methodName' => $methodName, 'methodCoverageValue' => round($methodCoverageValue * 100, 2), 'methodCoverageRounded' => ceil($methodCoverageValue * 100)));
             }
             $methodTemplates->build();
             $methodCoverageAvailableTemplates->resetData();
             $methodCoverageUnavailableTemplates->resetData();
         }
         $methodsTemplates->build();
         $methodTemplates->resetData();
     }
     $srcFile = $this->adapter->fopen($this->sourceDirectory->getRealPath()->__toString() . DIRECTORY_SEPARATOR . $classData['name'], 'r');
     if ($srcFile !== false) {
         $methodLines = array();
         foreach ($reflectedMethods as $reflectedMethodName => $reflectedMethod) {
             $methodLines[$reflectedMethod->getStartLine()] = $reflectedMethodName;
         }
         for ($currentMethod = null, $lineNumber = 1, $line = $this->adapter->fgets($srcFile); $line !== false; $lineNumber++, $line = $this->adapter->fgets($srcFile)) {
             if (isset($methodLines[$lineNumber]) === true) {
                 $currentMethod = $methodLines[$lineNumber];
             }
             switch (true) {
                 case isset($methods[$currentMethod]) === false || (isset($methods[$currentMethod][$lineNumber]) === false || $methods[$currentMethod][$lineNumber] == -2):
                     $lineTemplateName = 'lineTemplates';
                     break;
                 case isset($methods[$currentMethod]) === true && isset($methods[$currentMethod][$lineNumber]) === true && $methods[$currentMethod][$lineNumber] == -1:
                     $lineTemplateName = 'notCoveredLineTemplates';
                     break;
                 default:
                     $lineTemplateName = 'coveredLineTemplates';
             }
             $templates[$lineTemplateName]->lineNumber = $lineNumber;
             $templates[$lineTemplateName]->code = htmlentities($line, ENT_QUOTES, 'UTF-8');
             if (isset($methodLines[$lineNumber]) === true) {
                 foreach ($templates[$lineTemplateName]->anchor as $anchorTemplate) {
                     $anchorTemplate->resetData();
                     $anchorTemplate->method = $currentMethod;
                     $anchorTemplate->build();
                 }
             }
             $templates[$lineTemplateName]->addToParent()->resetData();
         }
         $this->adapter->fclose($srcFile);
     }
     $file = $this->destinationDirectory . DIRECTORY_SEPARATOR . str_replace('\\', '/', $className) . self::HTML_EXTENSION_FILE;
     $directory = $this->adapter->dirname($file);
     if ($this->adapter->is_dir($directory) === false) {
         $this->adapter->mkdir($directory, 0777, true);
     }
     $this->adapter->file_put_contents($file, (string) $template->build());
 }