[Pkg-owncloud-commits] [owncloud] 28/273: use common storage test

David Prévot taffit at moszumanska.debian.org
Fri Jul 4 03:12:54 UTC 2014


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

taffit pushed a commit to branch master
in repository owncloud.

commit 28c1a9557561319910bb86e9d04afcf6bb4bbf4f
Author: Jörn Friedrich Dreyer <jfd at butonic.de>
Date:   Mon Jun 23 16:29:01 2014 +0200

    use common storage test
---
 .../files/objectstore/objectstorestorage.php       |  61 +++---
 tests/lib/files/objectstore/swift.php              | 204 +--------------------
 2 files changed, 42 insertions(+), 223 deletions(-)

diff --git a/lib/private/files/objectstore/objectstorestorage.php b/lib/private/files/objectstore/objectstorestorage.php
index 63d672c..16b28a6 100644
--- a/lib/private/files/objectstore/objectstorestorage.php
+++ b/lib/private/files/objectstore/objectstorestorage.php
@@ -20,6 +20,7 @@
 
 namespace OC\Files\ObjectStore;
 
+use OC\Files\Filesystem;
 use OCP\Files\ObjectStore\IObjectStore;
 
 class ObjectStoreStorage extends \OC\Files\Storage\Common {
@@ -177,6 +178,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
 	}
 
 	public function stat($path) {
+		$path = $this->normalizePath($path);
 		return $this->getCache()->get($path);
 	}
 
@@ -200,8 +202,6 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
 
 		if ($path === '.') {
 			$path = '';
-		} else if ($path) {
-			$path .= '/';
 		}
 
 		try {
@@ -211,9 +211,9 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
 				$files[] = $file['name'];
 			}
 
-			\OC\Files\Stream\Dir::register('object' . $path, $files);
+			\OC\Files\Stream\Dir::register('objectstore' . $path . '/', $files);
 
-			return opendir('fakedir://object' . $path);
+			return opendir('fakedir://objectstore' . $path . '/');
 		} catch (Exception $e) {
 			\OCP\Util::writeLog('objectstore', $e->getMessage(), \OCP\Util::ERROR);
 			return false;
@@ -285,32 +285,41 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
 		return (bool)$this->stat($path);
 	}
 
-	public function rename($path1, $path2) {
-		$path1 = $this->normalizePath($path1);
-		$path2 = $this->normalizePath($path2);
-		$stat1 = $this->stat($path1);
-		if (is_array($stat1)) {
-			$parent = $this->stat(dirname($path2));
-			if (is_array($parent)) {
-				$stat2 = $this->stat($path2);
-				if (is_array($stat2)) {
-					$this->unlink($path2);
+	public function rename($source, $target) {
+		$source = $this->normalizePath($source);
+		$target = $this->normalizePath($target);
+		$stat1 = $this->stat($source);
+		if (isset($stat1['mimetype']) && $stat1['mimetype'] === 'httpd/unix-directory') {
+			$this->remove($target);
+			$dir = $this->opendir($source);
+			$this->mkdir($target);
+			while ($file = readdir($dir)) {
+				if (!Filesystem::isIgnoredDir($file)) {
+					if (!$this->rename($source . '/' . $file, $target . '/' . $file)) {
+						return false;
+					}
 				}
-				$stat1['parent'] = $parent['fileid'];
-				$stat1['path'] = $path2;
-				$stat1['path_hash'] = md5($path2);
-				$stat1['name'] = \OC_Util::basename($path2);
-				$stat1['mtime'] = time();
-				$stat1['etag'] = $this->getETag($path2);
-				$this->getCache()->update($stat1['fileid'], $stat1);
-				return true;
-			} else {
-				return false;
 			}
-
+			closedir($dir);
+			$this->remove($source);
+			return true;
 		} else {
-			return false;
+			if (is_array($stat1)) {
+				$parent = $this->stat(dirname($target));
+				if (is_array($parent)) {
+					$this->remove($target);
+					$stat1['parent'] = $parent['fileid'];
+					$stat1['path'] = $target;
+					$stat1['path_hash'] = md5($target);
+					$stat1['name'] = \OC_Util::basename($target);
+					$stat1['mtime'] = time();
+					$stat1['etag'] = $this->getETag($target);
+					$this->getCache()->update($stat1['fileid'], $stat1);
+					return true;
+				}
+			}
 		}
+		return false;
 	}
 
 	public function getMimeType($path) {
diff --git a/tests/lib/files/objectstore/swift.php b/tests/lib/files/objectstore/swift.php
index d05af4d..8ac8992 100644
--- a/tests/lib/files/objectstore/swift.php
+++ b/tests/lib/files/objectstore/swift.php
@@ -25,17 +25,13 @@ use OC\Files\ObjectStore\Swift as ObjectStoreToTest;
 
 use PHPUnit_Framework_TestCase;
 
-class Swift extends PHPUnit_Framework_TestCase {
-
-	/**
-	 * @var \OC\Files\ObjectStore\Swift $storage
-	 */
-	private $storage;
+//class Swift extends PHPUnit_Framework_TestCase {
+class Swift extends \Test\Files\Storage\Storage {
 
 	private $objectStorage;
-	
+
 	public function setUp() {
-		
+
 		\OC_App::disable('files_sharing');
 		\OC_App::disable('files_versions');
 
@@ -72,202 +68,16 @@ class Swift extends PHPUnit_Framework_TestCase {
 		);
 		$this->objectStorage = new ObjectStoreToTest($params);
 		$params['objectstore'] = $this->objectStorage;
-		$this->storage = new ObjectStoreStorage($params);
+		$this->instance = new ObjectStoreStorage($params);
 	}
 
 	public function tearDown() {
-		if (is_null($this->storage)) {
+		if (is_null($this->instance)) {
 			return;
 		}
 		$this->objectStorage->deleteContainer(true);
-		$this->storage->getCache()->clear();
+		$this->instance->getCache()->clear();
 		//TODO how do I clear hooks?
 	}
-	
-	public function testStat () {
-		$stat = $this->storage->stat('');
-		$this->assertInternalType('array', $stat);
-		$this->assertEquals(-1, $stat['parent']);
-		$this->assertEquals('', $stat['path']);
-		$this->assertEquals('', $stat['name']);
-		$this->assertEquals(0, $stat['size']);
-	}
-	public function testMkdir () {
-		$root = $this->storage->stat('');
-		
-		$statBefore = $this->storage->stat('someuser');
-		$this->assertFalse($statBefore);
-		
-		$this->storage->mkdir('someuser');
-		$statAfter = $this->storage->stat('someuser');
-		
-		$this->assertTrue(is_array($statAfter));
-		$this->assertEquals($root['fileid'], $statAfter['parent']);
-		$this->assertEquals('someuser', $statAfter['path']);
-		$this->assertEquals('someuser', $statAfter['name']);
-		$this->assertEquals(0, $statAfter['size']);
-		
-	}
-	
-	public function filesProvider() {
-		return array(
-			array('file.txt'),
-			array(' file.txt'),
-			array('file.txt '),
-			array('file with space.txt'),
-			array('spéciäl fìle.txt'),
-			array('☠ skull and crossbones.txt'),
-			array('skull and crossbones ☠ in between.txt'),
-			array('💩 pile of poo.txt'),
-			array('pile of 💩.txt'),
-			// check if someone tries to guess type on a date string
-			array('2013-04-25'),
-		);
-	}
-	/**
-	 * @dataProvider filesProvider
-	 */
-	public function testTouch ($file) {
-		$root = $this->storage->stat('');
-		
-		$statBefore = $this->storage->stat($file);
-		$this->assertFalse($statBefore);
-		
-		$this->assertTrue($this->storage->touch($file));
-		$statAfter = $this->storage->stat($file);
-		
-		$this->assertTrue(is_array($statAfter));
-		$this->assertEquals($root['fileid'], $statAfter['parent']);
-		$this->assertEquals($file, $statAfter['path']);
-		$this->assertEquals($file, $statAfter['name']);
-		$this->assertEquals(0, $statAfter['size']);
-
-		$this->assertFalse($this->storage->touch('non-existing/'.$file));
-		
-		//TODO test mtime
-		//TODO test existing files
-		//TODO test folders
-	}
-	/**
-	 * @dataProvider filesProvider
-	 */
-	public function testUnlink ($file) {
-		$root = $this->storage->stat('');
-
-		$this->assertFalse($this->storage->unlink($file));
-
-		$this->storage->touch($file);
-		$statBefore = $this->storage->stat($file);
-
-		$this->assertTrue(is_array($statBefore));
-		$this->assertEquals($root['fileid'], $statBefore['parent']);
-		$this->assertEquals($file, $statBefore['path']);
-		$this->assertEquals($file, $statBefore['name']);
-		$this->assertEquals(0, $statBefore['size']);
-
-		$this->assertTrue($this->storage->unlink($file));
-		
-		$this->assertFalse($this->storage->stat($file));
-
-		//TODO test folders
-	}
-	
-	/**
-	 * checks several methods by creating directories:
-	 * - file_exists (f/t)
-	 * - mkdir (t/f)
-	 * - is_dir (t)
-	 * - is_file (f)
-	 * - filetype ('dir')
-	 * - filesize (0)
-	 * - isReadable (t)
-	 * - isUpdateable (t)
-	 * - opendir (dir array/empty array)
-	 * - rmdir (t/f)
-	 * @dataProvider directoryProvider
-	 */
-	public function testDirectories($directory) {
-		$this->assertFalse($this->storage->file_exists('/' . $directory), 'Expected /'.$directory.' to not exist');
-
-		$this->assertTrue($this->storage->mkdir('/' . $directory), 'Expected creating /'.$directory.' to succeed');
-
-		$this->assertTrue($this->storage->file_exists('/' . $directory), 'Expected /'.$directory.' to exist');
-		$this->assertTrue($this->storage->is_dir('/' . $directory), 'Expected /'.$directory.' to be a directory');
-		$this->assertFalse($this->storage->is_file('/' . $directory), 'Expected /'.$directory.' not to be a file');
-		$this->assertEquals('dir', $this->storage->filetype('/' . $directory), 'Expected /'.$directory.' to have filetype \'dir\'');
-		$this->assertEquals(0, $this->storage->filesize('/' . $directory), 'Expected /'.$directory.' to have size 0');
-		$this->assertTrue($this->storage->isReadable('/' . $directory), 'Expected /'.$directory.' to be readable');
-		$this->assertTrue($this->storage->isUpdatable('/' . $directory), 'Expected /'.$directory.' to be updateable');
-
-		$dh = $this->storage->opendir('');
-		$content = array();
-		while ($file = readdir($dh)) {
-			if ($file != '.' and $file != '..') {
-				$content[] = $file;
-			}
-		}
-		$this->assertEquals(array($directory), $content);
-
-		$this->assertFalse($this->storage->mkdir('/' . $directory), 'Expected already existing folder /'.$directory.' to not be createable');
-		$this->assertTrue($this->storage->rmdir('/' . $directory));
-
-		$this->assertFalse($this->storage->file_exists('/' . $directory));
-
-		$this->assertFalse($this->storage->rmdir('/' . $directory), 'Expected not existing folder /'.$directory.' to not be removable');
-
-		$dh = $this->storage->opendir('/');
-		$content = array();
-		while ($file = readdir($dh)) {
-			if ($file != '.' and $file != '..') {
-				$content[] = $file;
-			}
-		}
-		$this->assertEquals(array(), $content);
-	}
-
-	public function directoryProvider() {
-		return array(
-			array('folder'),
-			array(' folder'),
-			array('folder '),
-			array('folder with space'),
-			array('spéciäl földer'),
-			array('☠ skull and crossbones'),
-			array('skull and crossbones ☠ in between'),
-			array('💩 pile of poo'),
-			array('pile of 💩'),
-			// check if someone tries to guess type on a date string
-			array('2013-04-25'),
-		);
-	}
-
-	public function testCopyAndMove() {
-		$textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt';
-		$this->storage->file_put_contents('/source.txt', file_get_contents($textFile));
-		$this->storage->copy('/source.txt', '/target.txt');
-		$this->assertTrue($this->storage->file_exists('/target.txt'));
-		$this->assertEquals($this->storage->file_get_contents('/source.txt'), $this->storage->file_get_contents('/target.txt'));
-
-		$this->storage->rename('/source.txt', '/target2.txt');
-		$this->assertTrue($this->storage->file_exists('/target2.txt'));
-		$this->assertFalse($this->storage->file_exists('/source.txt'));
-		$this->assertEquals(file_get_contents($textFile), $this->storage->file_get_contents('/target2.txt'));
-
-		// move to overwrite
-		$testContents = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
-		$this->storage->file_put_contents('/target3.txt', $testContents);
-		$this->storage->rename('/target2.txt', '/target3.txt');
-		$this->assertTrue($this->storage->file_exists('/target3.txt'));
-		$this->assertFalse($this->storage->file_exists('/target2.txt'));
-		$this->assertEquals(file_get_contents($textFile), $this->storage->file_get_contents('/target3.txt'));
-	}
-
-	//fopen
-	//filetype test
-	//getMimetype
-	//getURN?!?!
-	//test?
-	//getConnection
-	//writeback
 
 }

-- 
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