diff options
author | Robin Appelman <robin@icewind.nl> | 2017-01-04 18:13:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-04 18:13:28 +0100 |
commit | 6a0f0403d01dc6a889157b446edef73f9af58540 (patch) | |
tree | 6066a3a518c2f7b56c88746e0bfe774c56ff1b99 | |
parent | 9dbcc1a177ea490d20c49186a8f8090342ecb5a9 (diff) | |
parent | 32f06ab41518dc03e061dd88b18153e7b01d621e (diff) | |
download | nextcloud-server-6a0f0403d01dc6a889157b446edef73f9af58540.tar.gz nextcloud-server-6a0f0403d01dc6a889157b446edef73f9af58540.zip |
Merge pull request #2937 from nextcloud/remove-static-stream-wrapper
remove static:// stream wrapper
-rw-r--r-- | lib/base.php | 1 | ||||
-rw-r--r-- | lib/composer/composer/autoload_classmap.php | 1 | ||||
-rw-r--r-- | lib/composer/composer/autoload_static.php | 1 | ||||
-rw-r--r-- | lib/private/Files/Stream/StaticStream.php | 171 | ||||
-rw-r--r-- | tests/lib/DB/DBSchemaTest.php | 13 | ||||
-rw-r--r-- | tests/lib/DB/LegacyDBTest.php | 7 | ||||
-rw-r--r-- | tests/lib/DB/SchemaDiffTest.php | 8 | ||||
-rw-r--r-- | tests/lib/Files/Stream/StaticStreamTest.php | 70 |
8 files changed, 22 insertions, 250 deletions
diff --git a/lib/base.php b/lib/base.php index 3ab41f37599..f235629120a 100644 --- a/lib/base.php +++ b/lib/base.php @@ -667,7 +667,6 @@ class OC { } // register the stream wrappers - stream_wrapper_register('static', 'OC\Files\Stream\StaticStream'); stream_wrapper_register('close', 'OC\Files\Stream\Close'); stream_wrapper_register('quota', 'OC\Files\Stream\Quota'); diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 52ace115f66..78a3fb183df 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -556,7 +556,6 @@ return array( 'OC\\Files\\Stream\\Close' => $baseDir . '/lib/private/Files/Stream/Close.php', 'OC\\Files\\Stream\\Encryption' => $baseDir . '/lib/private/Files/Stream/Encryption.php', 'OC\\Files\\Stream\\Quota' => $baseDir . '/lib/private/Files/Stream/Quota.php', - 'OC\\Files\\Stream\\StaticStream' => $baseDir . '/lib/private/Files/Stream/StaticStream.php', 'OC\\Files\\Type\\Detection' => $baseDir . '/lib/private/Files/Type/Detection.php', 'OC\\Files\\Type\\Loader' => $baseDir . '/lib/private/Files/Type/Loader.php', 'OC\\Files\\Type\\TemplateManager' => $baseDir . '/lib/private/Files/Type/TemplateManager.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index 4387165b0bf..cec3bd18f15 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -586,7 +586,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\Files\\Stream\\Close' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/Close.php', 'OC\\Files\\Stream\\Encryption' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/Encryption.php', 'OC\\Files\\Stream\\Quota' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/Quota.php', - 'OC\\Files\\Stream\\StaticStream' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/StaticStream.php', 'OC\\Files\\Type\\Detection' => __DIR__ . '/../../..' . '/lib/private/Files/Type/Detection.php', 'OC\\Files\\Type\\Loader' => __DIR__ . '/../../..' . '/lib/private/Files/Type/Loader.php', 'OC\\Files\\Type\\TemplateManager' => __DIR__ . '/../../..' . '/lib/private/Files/Type/TemplateManager.php', diff --git a/lib/private/Files/Stream/StaticStream.php b/lib/private/Files/Stream/StaticStream.php deleted file mode 100644 index 3c91b23fd36..00000000000 --- a/lib/private/Files/Stream/StaticStream.php +++ /dev/null @@ -1,171 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ - -namespace OC\Files\Stream; - -class StaticStream { - const MODE_FILE = 0100000; - - public $context; - protected static $data = array(); - - protected $path = ''; - protected $pointer = 0; - protected $writable = false; - - public function stream_close() { - } - - public function stream_eof() { - return $this->pointer >= strlen(self::$data[$this->path]); - } - - public function stream_flush() { - } - - public static function clear() { - self::$data = array(); - } - - public function stream_open($path, $mode, $options, &$opened_path) { - switch ($mode[0]) { - case 'r': - if (!isset(self::$data[$path])) return false; - $this->path = $path; - $this->writable = isset($mode[1]) && $mode[1] == '+'; - break; - case 'w': - self::$data[$path] = ''; - $this->path = $path; - $this->writable = true; - break; - case 'a': - if (!isset(self::$data[$path])) self::$data[$path] = ''; - $this->path = $path; - $this->writable = true; - $this->pointer = strlen(self::$data[$path]); - break; - case 'x': - if (isset(self::$data[$path])) return false; - $this->path = $path; - $this->writable = true; - break; - case 'c': - if (!isset(self::$data[$path])) self::$data[$path] = ''; - $this->path = $path; - $this->writable = true; - break; - default: - return false; - } - $opened_path = $this->path; - return true; - } - - public function stream_read($count) { - $bytes = min(strlen(self::$data[$this->path]) - $this->pointer, $count); - $data = substr(self::$data[$this->path], $this->pointer, $bytes); - $this->pointer += $bytes; - return $data; - } - - public function stream_seek($offset, $whence = SEEK_SET) { - $len = strlen(self::$data[$this->path]); - switch ($whence) { - case SEEK_SET: - if ($offset <= $len) { - $this->pointer = $offset; - return true; - } - break; - case SEEK_CUR: - if ($this->pointer + $offset <= $len) { - $this->pointer += $offset; - return true; - } - break; - case SEEK_END: - if ($len + $offset <= $len) { - $this->pointer = $len + $offset; - return true; - } - break; - } - return false; - } - - public function stream_stat() { - return $this->url_stat($this->path); - } - - public function stream_tell() { - return $this->pointer; - } - - public function stream_write($data) { - if (!$this->writable) return 0; - $size = strlen($data); - if ($this->stream_eof()) { - self::$data[$this->path] .= $data; - } else { - self::$data[$this->path] = substr_replace( - self::$data[$this->path], - $data, - $this->pointer - ); - } - $this->pointer += $size; - return $size; - } - - public function unlink($path) { - if (isset(self::$data[$path])) { - unset(self::$data[$path]); - } - return true; - } - - public function url_stat($path) { - if (isset(self::$data[$path])) { - $size = strlen(self::$data[$path]); - $time = time(); - $data = array( - 'dev' => 0, - 'ino' => 0, - 'mode' => self::MODE_FILE | 0777, - 'nlink' => 1, - 'uid' => 0, - 'gid' => 0, - 'rdev' => '', - 'size' => $size, - 'atime' => $time, - 'mtime' => $time, - 'ctime' => $time, - 'blksize' => -1, - 'blocks' => -1, - ); - return array_values($data) + $data; - } - return false; - } -} diff --git a/tests/lib/DB/DBSchemaTest.php b/tests/lib/DB/DBSchemaTest.php index ba17546a34a..8eb7fcf81b4 100644 --- a/tests/lib/DB/DBSchemaTest.php +++ b/tests/lib/DB/DBSchemaTest.php @@ -10,6 +10,7 @@ namespace Test\DB; use Doctrine\DBAL\Platforms\SqlitePlatform; use OC_DB; +use OCP\ITempManager; use OCP\Security\ISecureRandom; use Test\TestCase; @@ -19,14 +20,20 @@ use Test\TestCase; * @group DB */ class DBSchemaTest extends TestCase { - protected $schema_file = 'static://test_db_scheme'; - protected $schema_file2 = 'static://test_db_scheme2'; + protected $schema_file; + protected $schema_file2; protected $table1; protected $table2; + /** @var ITempManager */ + protected $tempManager; protected function setUp() { parent::setUp(); + $this->tempManager = \OC::$server->getTempManager(); + $this->schema_file = $this->tempManager->getTemporaryFile(); + $this->schema_file2 = $this->tempManager->getTemporaryFile(); + $dbfile = \OC::$SERVERROOT.'/tests/data/db_structure.xml'; $dbfile2 = \OC::$SERVERROOT.'/tests/data/db_structure2.xml'; @@ -73,7 +80,7 @@ class DBSchemaTest extends TestCase { } public function doTestSchemaDumping() { - $outfile = 'static://db_out.xml'; + $outfile = $this->tempManager->getTemporaryFile(); OC_DB::getDbStructure($outfile); $content = file_get_contents($outfile); $this->assertContains($this->table1, $content); diff --git a/tests/lib/DB/LegacyDBTest.php b/tests/lib/DB/LegacyDBTest.php index f3de570c52d..3cf40228225 100644 --- a/tests/lib/DB/LegacyDBTest.php +++ b/tests/lib/DB/LegacyDBTest.php @@ -18,9 +18,14 @@ use OC_DB; class LegacyDBTest extends \Test\TestCase { protected $backupGlobals = FALSE; - protected static $schema_file = 'static://test_db_scheme'; + protected static $schema_file; protected $test_prefix; + public static function setUpBeforeClass() { + self::$schema_file = \OC::$server->getTempManager()->getTemporaryFile(); + } + + /** * @var string */ diff --git a/tests/lib/DB/SchemaDiffTest.php b/tests/lib/DB/SchemaDiffTest.php index b7bb3c2a9cb..88c9abeb431 100644 --- a/tests/lib/DB/SchemaDiffTest.php +++ b/tests/lib/DB/SchemaDiffTest.php @@ -47,9 +47,13 @@ class SchemaDiffTest extends TestCase { /** @var string */ private $testPrefix; + private $schemaFile; + protected function setUp() { parent::setUp(); + $this->schemaFile = \OC::$server->getTempManager()->getTemporaryFile(); + $this->config = \OC::$server->getConfig(); $this->connection = \OC::$server->getDatabaseConnection(); $this->manager = new MDB2SchemaManager($this->connection); @@ -57,7 +61,7 @@ class SchemaDiffTest extends TestCase { } protected function tearDown() { - $this->manager->removeDBStructure('static://test_db_scheme'); + $this->manager->removeDBStructure($this->schemaFile); parent::tearDown(); } @@ -68,7 +72,7 @@ class SchemaDiffTest extends TestCase { public function testZeroChangeOnSchemaMigrations($xml) { $xml = str_replace( '*dbprefix*', $this->testPrefix, $xml ); - $schemaFile = 'static://test_db_scheme'; + $schemaFile = $this->schemaFile; file_put_contents($schemaFile, $xml); // apply schema diff --git a/tests/lib/Files/Stream/StaticStreamTest.php b/tests/lib/Files/Stream/StaticStreamTest.php deleted file mode 100644 index 309291a3a5b..00000000000 --- a/tests/lib/Files/Stream/StaticStreamTest.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php -/** - * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -namespace Test\Files\Stream; - -class StaticStreamTest extends \Test\TestCase { - - private $sourceFile; - private $sourceText; - - protected function setUp() { - parent::setUp(); - $this->sourceFile = \OC::$SERVERROOT . '/tests/data/lorem.txt'; - $this->sourceText = file_get_contents($this->sourceFile); - } - - protected function tearDown() { - \OC\Files\Stream\StaticStream::clear(); - parent::tearDown(); - } - - public function testContent() { - file_put_contents('static://foo', $this->sourceText); - $this->assertEquals($this->sourceText, file_get_contents('static://foo')); - } - - public function testMultipleFiles() { - file_put_contents('static://foo', $this->sourceText); - file_put_contents('static://bar', strrev($this->sourceText)); - $this->assertEquals($this->sourceText, file_get_contents('static://foo')); - $this->assertEquals(strrev($this->sourceText), file_get_contents('static://bar')); - } - - public function testOverwrite() { - file_put_contents('static://foo', $this->sourceText); - file_put_contents('static://foo', 'qwerty'); - $this->assertEquals('qwerty', file_get_contents('static://foo')); - } - - public function testIsFile() { - $this->assertFalse(is_file('static://foo')); - file_put_contents('static://foo', $this->sourceText); - $this->assertTrue(is_file('static://foo')); - } - - public function testIsDir() { - $this->assertFalse(is_dir('static://foo')); - file_put_contents('static://foo', $this->sourceText); - $this->assertFalse(is_dir('static://foo')); - } - - public function testFileType() { - file_put_contents('static://foo', $this->sourceText); - $this->assertEquals('file', filetype('static://foo')); - } - - public function testUnlink() { - $this->assertFalse(file_exists('static://foo')); - file_put_contents('static://foo', $this->sourceText); - $this->assertTrue(file_exists('static://foo')); - unlink('static://foo'); - clearstatcache(); - $this->assertFalse(file_exists('static://foo')); - } -} |