summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2012-12-15 03:10:56 +0100
committerRobin Appelman <icewind@owncloud.com>2012-12-15 03:10:56 +0100
commit4be039e6cbc0a826b07fc2af1a6c6d94888a9187 (patch)
treefacd0f5e7cb38c7ae0c7a84a5d29cfc1e4fc5173
parentbc52f121626bb1bb1f67bc1f876d0420d153b3d1 (diff)
downloadnextcloud-server-4be039e6cbc0a826b07fc2af1a6c6d94888a9187.tar.gz
nextcloud-server-4be039e6cbc0a826b07fc2af1a6c6d94888a9187.zip
Filecache Watcher: use scan or scanFile based on the current item, not the cached item
-rw-r--r--lib/files/cache/watcher.php6
-rw-r--r--tests/lib/files/cache/watcher.php34
2 files changed, 38 insertions, 2 deletions
diff --git a/lib/files/cache/watcher.php b/lib/files/cache/watcher.php
index d6039d9945c..31059ec7f56 100644
--- a/lib/files/cache/watcher.php
+++ b/lib/files/cache/watcher.php
@@ -44,12 +44,14 @@ class Watcher {
public function checkUpdate($path) {
$cachedEntry = $this->cache->get($path);
if ($this->storage->hasUpdated($path, $cachedEntry['mtime'])) {
- if ($cachedEntry['mimetype'] === 'httpd/unix-directory') {
+ if ($this->storage->is_dir($path)) {
$this->scanner->scan($path, Scanner::SCAN_SHALLOW);
- $this->cleanFolder($path);
} else {
$this->scanner->scanFile($path);
}
+ if ($cachedEntry['mimetype'] === 'httpd/unix-directory') {
+ $this->cleanFolder($path);
+ }
$this->cache->correctFolderSize($path);
}
}
diff --git a/tests/lib/files/cache/watcher.php b/tests/lib/files/cache/watcher.php
index 0125dd843b9..07c8ac3640c 100644
--- a/tests/lib/files/cache/watcher.php
+++ b/tests/lib/files/cache/watcher.php
@@ -63,6 +63,40 @@ class Watcher extends \PHPUnit_Framework_TestCase {
$this->assertFalse($cache->inCache('folder/bar2.txt'));
}
+ public function testFileToFolder() {
+ $storage = $this->getTestStorage();
+ $cache = $storage->getCache();
+ $updater = new \OC\Files\Cache\Watcher($storage);
+
+ //set the mtime to the past so it can detect an mtime change
+ $cache->put('', array('mtime' => 10));
+
+ $storage->unlink('foo.txt');
+ $storage->rename('folder','foo.txt');
+ $updater->checkUpdate('');
+
+ $entry= $cache->get('foo.txt');
+ $this->assertEquals(-1, $entry['size']);
+ $this->assertEquals('httpd/unix-directory', $entry['mimetype']);
+ $this->assertFalse($cache->inCache('folder'));
+ $this->assertFalse($cache->inCache('folder/bar.txt'));
+
+ $storage = $this->getTestStorage();
+ $cache = $storage->getCache();
+ $updater = new \OC\Files\Cache\Watcher($storage);
+
+ //set the mtime to the past so it can detect an mtime change
+ $cache->put('foo.txt', array('mtime' => 10));
+
+ $storage->unlink('foo.txt');
+ $storage->rename('folder','foo.txt');
+ $updater->checkUpdate('foo.txt');
+
+ $entry= $cache->get('foo.txt');
+ $this->assertEquals('httpd/unix-directory', $entry['mimetype']);
+ $this->assertTrue($cache->inCache('foo.txt/bar.txt'));
+ }
+
/**
* @param bool $scan
* @return \OC\Files\Storage\Storage