the path need to be normalized before putting it into resolvePath()

otherwise the returned internalPath will not match followup calls to e.g. Cache::getID()
remotes/origin/stable6
Thomas Müller 12 years ago
parent 666e52a46b
commit bc6e352ccd
  1. 4
      lib/private/files/view.php
  2. 34
      tests/lib/files/view.php

@ -110,7 +110,9 @@ class View {
* @return array consisting of the storage and the internal path
*/
public function resolvePath($path) {
return Filesystem::resolvePath($this->getAbsolutePath($path));
$a = $this->getAbsolutePath($path);
$p = Filesystem::normalizePath($a);
return Filesystem::resolvePath($p);
}
/**

@ -416,4 +416,38 @@ class View extends \PHPUnit_Framework_TestCase {
$view->file_put_contents('/asd.txt', 'foo');
$this->assertNull($this->createHookPath);
}
/**
* @dataProvider resolvePathTestProvider
*/
public function testResolvePath($expected, $pathToTest) {
$storage1 = $this->getTestStorage();
\OC\Files\Filesystem::mount($storage1, array(), '/');
$view = new \OC\Files\View('');
$result = $view->resolvePath($pathToTest);
$this->assertEquals($expected, $result[1]);
$exists = $view->file_exists($pathToTest);
$this->assertTrue($exists);
$exists = $view->file_exists($result[1]);
$this->assertTrue($exists);
}
function resolvePathTestProvider() {
return array(
array('foo.txt', 'foo.txt'),
array('foo.txt', '/foo.txt'),
array('folder', 'folder'),
array('folder', '/folder'),
array('folder', 'folder/'),
array('folder', '/folder/'),
array('folder/bar.txt', 'folder/bar.txt'),
array('folder/bar.txt', '/folder/bar.txt'),
array('', ''),
array('', '/'),
);
}
}

Loading…
Cancel
Save