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

remotes/origin/stable5
Robin Appelman 13 years ago
parent bc52f12162
commit 4be039e6cb
  1. 6
      lib/files/cache/watcher.php
  2. 34
      tests/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);
}
}

@ -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…
Cancel
Save