[Pkg-owncloud-commits] [owncloud] 99/457: Get correct mimetype when moving and changing extension

David Prévot taffit at moszumanska.debian.org
Sun Jun 28 20:05:36 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch stable8
in repository owncloud.

commit 22968e806c9e71355875bc1e44908110c3960f79
Author: Vincent Petry <pvince81 at owncloud.com>
Date:   Thu May 21 10:57:58 2015 +0200

    Get correct mimetype when moving and changing extension
    
    Fixes issue when restoring folders from trash cross-storage, as such
    folders have an extension ".d12345678".
    
    Fixes issue when moving folders between storages and at the same time
    changing their extension.
---
 lib/private/files/cache/updater.php |  2 +-
 tests/lib/files/cache/updater.php   | 26 +++++++++++++++++++-------
 2 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/lib/private/files/cache/updater.php b/lib/private/files/cache/updater.php
index 7df223e..193ddbe 100644
--- a/lib/private/files/cache/updater.php
+++ b/lib/private/files/cache/updater.php
@@ -182,7 +182,7 @@ class Updater {
 
 			if (pathinfo($sourceInternalPath, PATHINFO_EXTENSION) !== pathinfo($targetInternalPath, PATHINFO_EXTENSION)) {
 				// handle mime type change
-				$mimeType = $sourceStorage->getMimeType($targetInternalPath);
+				$mimeType = $targetStorage->getMimeType($targetInternalPath);
 				$fileId = $targetCache->getId($targetInternalPath);
 				$targetCache->update($fileId, array('mimetype' => $mimeType));
 			}
diff --git a/tests/lib/files/cache/updater.php b/tests/lib/files/cache/updater.php
index 726ee36..ea75c8d 100644
--- a/tests/lib/files/cache/updater.php
+++ b/tests/lib/files/cache/updater.php
@@ -216,27 +216,38 @@ class Updater extends \Test\TestCase {
 
 		$this->storage->getScanner()->scan('');
 
+		$this->assertTrue($this->cache->inCache('foo'));
 		$this->assertTrue($this->cache->inCache('foo/foo.txt'));
 		$this->assertTrue($this->cache->inCache('foo/bar.txt'));
+		$this->assertTrue($this->cache->inCache('foo/bar'));
 		$this->assertTrue($this->cache->inCache('foo/bar/bar.txt'));
 		$cached = [];
+		$cached[] = $this->cache->get('foo');
 		$cached[] = $this->cache->get('foo/foo.txt');
 		$cached[] = $this->cache->get('foo/bar.txt');
+		$cached[] = $this->cache->get('foo/bar');
 		$cached[] = $this->cache->get('foo/bar/bar.txt');
 
-		$this->view->rename('/foo', '/bar/foo');
+		// add extension to trigger the possible mimetype change
+		$this->view->rename('/foo', '/bar/foo.b');
 
+		$this->assertFalse($this->cache->inCache('foo'));
 		$this->assertFalse($this->cache->inCache('foo/foo.txt'));
 		$this->assertFalse($this->cache->inCache('foo/bar.txt'));
+		$this->assertFalse($this->cache->inCache('foo/bar'));
 		$this->assertFalse($this->cache->inCache('foo/bar/bar.txt'));
-		$this->assertTrue($cache2->inCache('foo/foo.txt'));
-		$this->assertTrue($cache2->inCache('foo/bar.txt'));
-		$this->assertTrue($cache2->inCache('foo/bar/bar.txt'));
+		$this->assertTrue($cache2->inCache('foo.b'));
+		$this->assertTrue($cache2->inCache('foo.b/foo.txt'));
+		$this->assertTrue($cache2->inCache('foo.b/bar.txt'));
+		$this->assertTrue($cache2->inCache('foo.b/bar'));
+		$this->assertTrue($cache2->inCache('foo.b/bar/bar.txt'));
 
 		$cachedTarget = [];
-		$cachedTarget[] = $cache2->get('foo/foo.txt');
-		$cachedTarget[] = $cache2->get('foo/bar.txt');
-		$cachedTarget[] = $cache2->get('foo/bar/bar.txt');
+		$cachedTarget[] = $cache2->get('foo.b');
+		$cachedTarget[] = $cache2->get('foo.b/foo.txt');
+		$cachedTarget[] = $cache2->get('foo.b/bar.txt');
+		$cachedTarget[] = $cache2->get('foo.b/bar');
+		$cachedTarget[] = $cache2->get('foo.b/bar/bar.txt');
 
 		foreach ($cached as $i => $old) {
 			$new = $cachedTarget[$i];
@@ -244,6 +255,7 @@ class Updater extends \Test\TestCase {
 			$this->assertEquals($old['size'], $new['size']);
 			$this->assertEquals($old['etag'], $new['etag']);
 			$this->assertEquals($old['fileid'], $new['fileid']);
+			$this->assertEquals($old['mimetype'], $new['mimetype']);
 		}
 	}
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list