Browse Source

Dont remove a file from cache if the delete operation failed

remotes/origin/create-share-target-reuse
Robin Appelman 11 years ago
parent
commit
2124540d1d
  1. 2
      lib/private/files/view.php
  2. 23
      tests/lib/files/view.php

2
lib/private/files/view.php

@ -803,7 +803,7 @@ class View {
$result = \OC_FileProxy::runPostProxies($operation, $this->getAbsolutePath($path), $result);
if (in_array('delete', $hooks)) {
if (in_array('delete', $hooks) and $result) {
$this->updater->remove($path);
}
if (in_array('write', $hooks)) {

23
tests/lib/files/view.php

@ -849,4 +849,27 @@ class View extends \Test\TestCase {
$this->assertEquals($time, $view->filemtime('/test/sub/storage/foo/bar.txt'));
}
public function testDeleteFailKeepCache() {
/**
* @var \PHPUnit_Framework_MockObject_MockObject | \OC\Files\Storage\Temporary $storage
*/
$storage = $this->getMockBuilder('\OC\Files\Storage\Temporary')
->setConstructorArgs(array(array()))
->setMethods(array('unlink'))
->getMock();
$storage->expects($this->once())
->method('unlink')
->will($this->returnValue(false));
$scanner = $storage->getScanner();
$cache = $storage->getCache();
$storage->file_put_contents('foo.txt', 'asd');
$scanner->scan('');
\OC\Files\Filesystem::mount($storage, array(), '/test/');
$view = new \OC\Files\View('/test');
$this->assertFalse($view->unlink('foo.txt'));
$this->assertTrue($cache->inCache('foo.txt'));
}
}
Loading…
Cancel
Save