From a05820c6594aa3ea6f2394e8d75117d339f06ed3 Mon Sep 17 00:00:00 2001
From: Thomas Mueller <thomas.mueller@tmit.eu>
Date: Tue, 12 Mar 2013 15:30:10 +0100
Subject: [PATCH] fixing various filesystem/storage unit tests on windows
 fixing copy operation on mapper

---
 lib/files/mapper.php                | 8 +++++---
 lib/files/storage/mappedlocal.php   | 9 ++++++---
 tests/lib/files/storage/storage.php | 3 +--
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/lib/files/mapper.php b/lib/files/mapper.php
index d65726d68d..179e28e5e7 100644
--- a/lib/files/mapper.php
+++ b/lib/files/mapper.php
@@ -77,7 +77,9 @@ class Mapper
 		$result = $query->execute(array($path1.'%'));
 		$updateQuery = \OC_DB::prepare('UPDATE `*PREFIX*file_map`'
 			.' SET `logic_path` = ?'
-			.' AND `physic_path` = ?'
+			.' , `logic_path_hash` = ?'
+			.' , `physic_path` = ?'
+			.' , `physic_path_hash` = ?'
 			.' WHERE `logic_path` = ?');
 		while( $row = $result->fetchRow()) {
 			$currentLogic = $row['logic_path'];
@@ -86,7 +88,7 @@ class Mapper
 			$newPhysic = $physicPath2.$this->stripRootFolder($currentPhysic, $physicPath1);
 			if ($path1 !== $currentLogic) {
 				try {
-					$updateQuery->execute(array($newLogic, $newPhysic, $currentLogic));
+					$updateQuery->execute(array($newLogic, md5($newLogic), $newPhysic, md5($newPhysic), $currentLogic));
 				} catch (\Exception $e) {
 					error_log('Mapper::Copy failed '.$currentLogic.' -> '.$newLogic.'\n'.$e);
 					throw $e;
@@ -190,7 +192,7 @@ class Mapper
 			array_push($sluggedElements, $last.'-'.$index);
 		}
 
-		$sluggedPath = $this->unchangedPhysicalRoot.implode(DIRECTORY_SEPARATOR, $sluggedElements);
+		$sluggedPath = $this->unchangedPhysicalRoot.implode('/', $sluggedElements);
 		return $this->stripLast($sluggedPath);
 	}
 
diff --git a/lib/files/storage/mappedlocal.php b/lib/files/storage/mappedlocal.php
index 434c10bcbf..ba3fcdc5c9 100644
--- a/lib/files/storage/mappedlocal.php
+++ b/lib/files/storage/mappedlocal.php
@@ -50,7 +50,7 @@ class MappedLocal extends \OC\Files\Storage\Common{
 				continue;
 			}
 
-			$logicalFilePath = $this->mapper->physicalToLogic($physicalPath.DIRECTORY_SEPARATOR.$file);
+			$logicalFilePath = $this->mapper->physicalToLogic($physicalPath.'/'.$file);
 
 			$file= $this->mapper->stripRootFolder($logicalFilePath, $logicalPath);
 			$file = $this->stripLeading($file);
@@ -130,7 +130,7 @@ class MappedLocal extends \OC\Files\Storage\Common{
 	public function file_get_contents($path) {
 		return file_get_contents($this->buildPath($path));
 	}
-	public function file_put_contents($path, $data) {//trigger_error("$path = ".var_export($path, 1));
+	public function file_put_contents($path, $data) {
 		return file_put_contents($this->buildPath($path), $data);
 	}
 	public function unlink($path) {
@@ -280,7 +280,7 @@ class MappedLocal extends \OC\Files\Storage\Common{
 		foreach (scandir($physicalDir) as $item) {
 			if ($item == '.' || $item == '..')
 				continue;
-			$physicalItem = $this->mapper->physicalToLogic($physicalDir.DIRECTORY_SEPARATOR.$item);
+			$physicalItem = $this->mapper->physicalToLogic($physicalDir.'/'.$item);
 			$item = substr($physicalItem, strlen($physicalDir)+1);
 
 			if(strstr(strtolower($item), strtolower($query)) !== false) {
@@ -331,6 +331,9 @@ class MappedLocal extends \OC\Files\Storage\Common{
 		if(strpos($path, '/') === 0) {
 			$path = substr($path, 1);
 		}
+		if(strpos($path, '\\') === 0) {
+			$path = substr($path, 1);
+		}
 		if ($path === false) {
 			return '';
 		}
diff --git a/tests/lib/files/storage/storage.php b/tests/lib/files/storage/storage.php
index f78f66d8b8..3d68efea5f 100644
--- a/tests/lib/files/storage/storage.php
+++ b/tests/lib/files/storage/storage.php
@@ -224,8 +224,7 @@ abstract class Storage extends \PHPUnit_Framework_TestCase {
 	}
 
 	public function testSearchInSubFolder() {
-		$this->instance->mkdir('sub')
-		;
+		$this->instance->mkdir('sub');
 		$textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt';
 		$this->instance->file_put_contents('/sub/lorem.txt', file_get_contents($textFile, 'r'));
 		$pngFile = \OC::$SERVERROOT . '/tests/data/logo-wide.png';
-- 
GitLab