aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/files/view.php8
-rw-r--r--tests/lib/files/view.php12
2 files changed, 20 insertions, 0 deletions
diff --git a/lib/files/view.php b/lib/files/view.php
index 06027910123..c50897603eb 100644
--- a/lib/files/view.php
+++ b/lib/files/view.php
@@ -794,6 +794,14 @@ class View {
$subPermissionsCache->set($rootEntry['fileid'], $user, $permissions);
}
$rootEntry['permissions'] = $permissions;
+
+ //remove any existing entry with the same name
+ foreach ($files as $i => $file) {
+ if ($file['name'] === $rootEntry['name']) {
+ unset($files[$i]);
+ break;
+ }
+ }
$files[] = $rootEntry;
}
}
diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php
index 53271142672..586ad178425 100644
--- a/tests/lib/files/view.php
+++ b/tests/lib/files/view.php
@@ -98,6 +98,18 @@ class View extends \PHPUnit_Framework_TestCase {
$this->assertEquals(array(), $rootView->getDirectoryContent('/non/existing'));
}
+ function testMountPointOverwrite() {
+ $storage1 = $this->getTestStorage(false);
+ $storage2 = $this->getTestStorage();
+ $storage1->mkdir('substorage');
+ \OC\Files\Filesystem::mount($storage1, array(), '/');
+ \OC\Files\Filesystem::mount($storage2, array(), '/substorage');
+
+ $rootView = new \OC\Files\View('');
+ $folderContent = $rootView->getDirectoryContent('/');
+ $this->assertEquals(4, count($folderContent));
+ }
+
function testCacheIncompleteFolder() {
$storage1 = $this->getTestStorage(false);
\OC\Files\Filesystem::mount($storage1, array(), '/');