From b07672821bcdc1ce31e169d691cf9a94ad5fad21 Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind@owncloud.com>
Date: Sun, 28 Oct 2012 11:43:45 +0100
Subject: [PATCH] check for changes when using the cache api

---
 lib/files/view.php       |  6 ++++++
 tests/lib/files/view.php | 17 +++++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/lib/files/view.php b/lib/files/view.php
index 0f9a5feb5d..c5e470b438 100644
--- a/lib/files/view.php
+++ b/lib/files/view.php
@@ -672,6 +672,9 @@ class View {
 		if (!$cache->inCache($internalPath)) {
 			$scanner = $storage->getScanner();
 			$scanner->scan($internalPath, Cache\Scanner::SCAN_SHALLOW);
+		} else {
+			$watcher = new \OC\Files\Cache\Watcher($storage);
+			$watcher->checkUpdate($internalPath);
 		}
 
 		$data = $cache->get($internalPath);
@@ -711,6 +714,9 @@ class View {
 		if (!$cache->inCache($internalPath)) {
 			$scanner = $storage->getScanner();
 			$scanner->scan($internalPath, Cache\Scanner::SCAN_SHALLOW);
+		} else {
+			$watcher = new \OC\Files\Cache\Watcher($storage);
+			$watcher->checkUpdate($internalPath);
 		}
 
 		$files = $cache->getFolderContents($internalPath); //TODO: mimetype_filter
diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php
index 8ff03963e4..fa562cb15c 100644
--- a/tests/lib/files/view.php
+++ b/tests/lib/files/view.php
@@ -146,6 +146,23 @@ class View extends \PHPUnit_Framework_TestCase {
 		$this->assertEquals(3, count($folderView->searchByMime('text')));
 	}
 
+	function testWatcher() {
+		$storage1 = $this->getTestStorage();
+		\OC\Files\Filesystem::mount($storage1, array(), '/');
+
+		$rootView = new \OC\Files\View('');
+
+		$cachedData = $rootView->getFileInfo('foo.txt');
+		$this->assertEquals(16, $cachedData['size']);
+
+		$rootView->putFileInfo('foo.txt', array('mtime' => 10));
+		$storage1->file_put_contents('foo.txt', 'foo');
+		clearstatcache();
+
+		$cachedData = $rootView->getFileInfo('foo.txt');
+		$this->assertEquals(3, $cachedData['size']);
+	}
+
 	/**
 	 * @param bool $scan
 	 * @return \OC\Files\Storage\Storage
-- 
GitLab