summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2017-01-04 18:13:28 +0100
committerGitHub <noreply@github.com>2017-01-04 18:13:28 +0100
commit6a0f0403d01dc6a889157b446edef73f9af58540 (patch)
tree6066a3a518c2f7b56c88746e0bfe774c56ff1b99
parent9dbcc1a177ea490d20c49186a8f8090342ecb5a9 (diff)
parent32f06ab41518dc03e061dd88b18153e7b01d621e (diff)
downloadnextcloud-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.php1
-rw-r--r--lib/composer/composer/autoload_classmap.php1
-rw-r--r--lib/composer/composer/autoload_static.php1
-rw-r--r--lib/private/Files/Stream/StaticStream.php171
-rw-r--r--tests/lib/DB/DBSchemaTest.php13
-rw-r--r--tests/lib/DB/LegacyDBTest.php7
-rw-r--r--tests/lib/DB/SchemaDiffTest.php8
-rw-r--r--tests/lib/Files/Stream/StaticStreamTest.php70
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'));
- }
-}