Filecache Watcher: use scan or scanFile based on the current item, not the cached item

This commit is contained in:
Robin Appelman 2012-12-15 03:10:56 +01:00
parent bc52f12162
commit 4be039e6cb
2 changed files with 38 additions and 2 deletions

View File

@ -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);
}
}

View File

@ -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