Filecache Watcher: use scan or scanFile based on the current item, not the cached item
This commit is contained in:
parent
bc52f12162
commit
4be039e6cb
2 changed files with 38 additions and 2 deletions
6
lib/files/cache/watcher.php
vendored
6
lib/files/cache/watcher.php
vendored
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
34
tests/lib/files/cache/watcher.php
vendored
34
tests/lib/files/cache/watcher.php
vendored
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue