mageekguy\atoum\fs\path::getRealPath PHP Method

getRealPath() public method

public getRealPath ( )
    public function getRealPath()
    {
        $absolutePath = $this->getAbsolutePath();
        $files = '';
        $realPath = realpath((string) $absolutePath);
        if ($realPath === false) {
            while ($realPath === false && $absolutePath->isRoot() === false) {
                $files = '/' . basename((string) $absolutePath) . $files;
                $absolutePath = $absolutePath->getParentDirectoryPath();
                $realPath = realpath((string) $absolutePath);
            }
        }
        if ($realPath === false) {
            throw new exception('Unable to get real path for \'' . $this . '\'');
        }
        return $absolutePath->setDriveAndComponents($realPath . $files);
    }

Usage Example

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 . '\'');
 }
All Usage Examples Of mageekguy\atoum\fs\path::getRealPath