summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/simpletest/tests/file.test139
-rw-r--r--modules/simpletest/tests/file_test.module17
-rw-r--r--modules/system/image.gd.inc2
3 files changed, 151 insertions, 7 deletions
diff --git a/modules/simpletest/tests/file.test b/modules/simpletest/tests/file.test
index dc12b1b73..9dbe5464f 100644
--- a/modules/simpletest/tests/file.test
+++ b/modules/simpletest/tests/file.test
@@ -196,10 +196,13 @@ class FileTestCase extends DrupalWebTestCase {
* @return
* File object.
*/
- function createFile($filepath = NULL, $contents = NULL, $scheme = 'public') {
+ function createFile($filepath = NULL, $contents = NULL, $scheme = NULL) {
if (!isset($filepath)) {
$filepath = $this->randomName();
}
+ if (!isset($scheme)) {
+ $scheme = file_default_scheme();
+ }
$filepath = $scheme . '://' . $filepath;
if (!isset($contents)) {
@@ -427,7 +430,7 @@ class FileValidatorTest extends DrupalWebTestCase {
// Maximum size.
if (image_get_toolkit()) {
// Copy the image so that the original doesn't get resized.
- copy(drupal_realpath('misc/druplicon.png'), 'temporary://druplicon.png');
+ copy('misc/druplicon.png', 'temporary://druplicon.png');
$this->image->uri = 'temporary://druplicon.png';
$errors = file_validate_image_resolution($this->image, '10x5');
@@ -437,7 +440,7 @@ class FileValidatorTest extends DrupalWebTestCase {
$this->assertTrue($info['width'] <= 10, t('Image scaled to correct width.'), 'File');
$this->assertTrue($info['height'] <= 5, t('Image scaled to correct height.'), 'File');
- drupal_unlink(drupal_realpath('temporary://druplicon.png'));
+ drupal_unlink('temporary://druplicon.png');
}
else {
// TODO: should check that the error is returned if no toolkit is available.
@@ -531,18 +534,34 @@ class FileUnmanagedSaveDataTest extends FileTestCase {
$filepath = file_unmanaged_save_data($contents);
$this->assertTrue($filepath, t('Unnamed file saved correctly.'));
$this->assertEqual(file_uri_scheme($filepath), file_default_scheme(), t("File was placed in Drupal's files directory."));
- $this->assertEqual($contents, file_get_contents(drupal_realpath($filepath)), t('Contents of the file are correct.'));
+ $this->assertEqual($contents, file_get_contents($filepath), t('Contents of the file are correct.'));
// Provide a filename.
$filepath = file_unmanaged_save_data($contents, 'public://asdf.txt', FILE_EXISTS_REPLACE);
$this->assertTrue($filepath, t('Unnamed file saved correctly.'));
$this->assertEqual('asdf.txt', basename($filepath), t('File was named correctly.'));
- $this->assertEqual($contents, file_get_contents(drupal_realpath($filepath)), t('Contents of the file are correct.'));
+ $this->assertEqual($contents, file_get_contents($filepath), t('Contents of the file are correct.'));
$this->assertFilePermissions($filepath, variable_get('file_chmod_file', 0664));
}
}
/**
+ * Tests the file_unmanaged_save_data() function on remote filesystems.
+ */
+class RemoteFileUnmanagedSaveDataTest extends FileUnmanagedSaveDataTest {
+ public static function getInfo() {
+ $info = parent::getInfo();
+ $info['group'] = 'File API (remote)';
+ return $info;
+ }
+
+ function setUp() {
+ parent::setUp('file_test');
+ variable_set('file_default_scheme', 'dummy-remote');
+ }
+}
+
+/**
* Test the file_save_upload() function.
*/
class FileSaveUploadTest extends FileHookTestCase {
@@ -863,6 +882,22 @@ class FileSaveUploadTest extends FileHookTestCase {
}
/**
+ * Test the file_save_upload() function on remote filesystems.
+ */
+class RemoteFileSaveUploadTest extends FileSaveUploadTest {
+ public static function getInfo() {
+ $info = parent::getInfo();
+ $info['group'] = 'File API (remote)';
+ return $info;
+ }
+
+ function setUp() {
+ parent::setUp('file_test');
+ variable_set('file_default_scheme', 'dummy-remote');
+ }
+}
+
+/**
* Directory related tests.
*/
class FileDirectoryTest extends FileTestCase {
@@ -879,7 +914,7 @@ class FileDirectoryTest extends FileTestCase {
*/
function testFileCheckDirectoryHandling() {
// A directory to operate on.
- $directory = file_stream_wrapper_get_instance_by_scheme(file_default_scheme())->getDirectoryPath() . '/' . $this->randomName() . '/' . $this->randomName();
+ $directory = file_default_scheme() . '://' . $this->randomName() . '/' . $this->randomName();
$this->assertFalse(is_dir($directory), t('Directory does not exist prior to testing.'));
// Non-existent directory.
@@ -986,6 +1021,22 @@ class FileDirectoryTest extends FileTestCase {
}
/**
+ * Directory related tests.
+ */
+class RemoteFileDirectoryTest extends FileDirectoryTest {
+ public static function getInfo() {
+ $info = parent::getInfo();
+ $info['group'] = 'File API (remote)';
+ return $info;
+ }
+
+ function setUp() {
+ parent::setUp('file_test');
+ variable_set('file_default_scheme', 'dummy-remote');
+ }
+}
+
+/**
* Tests the file_scan_directory() function.
*/
class FileScanDirectoryTest extends FileTestCase {
@@ -1114,6 +1165,21 @@ class FileScanDirectoryTest extends FileTestCase {
}
}
+/**
+ * Tests the file_scan_directory() function on remote filesystems.
+ */
+class RemoteFileScanDirectoryTest extends FileScanDirectoryTest {
+ public static function getInfo() {
+ $info = parent::getInfo();
+ $info['group'] = 'File API (remote)';
+ return $info;
+ }
+
+ function setUp() {
+ parent::setUp('file_test');
+ variable_set('file_default_scheme', 'dummy-remote');
+ }
+}
/**
* Deletion related tests.
@@ -1160,6 +1226,21 @@ class FileUnmanagedDeleteTest extends FileTestCase {
}
}
+/**
+ * Deletion related tests on remote filesystems.
+ */
+class RemoteFileUnmanagedDeleteTest extends FileUnmanagedDeleteTest {
+ public static function getInfo() {
+ $info = parent::getInfo();
+ $info['group'] = 'File API (remote)';
+ return $info;
+ }
+
+ function setUp() {
+ parent::setUp('file_test');
+ variable_set('file_default_scheme', 'dummy-remote');
+ }
+}
/**
* Deletion related tests.
@@ -1237,6 +1318,21 @@ class FileUnmanagedDeleteRecursiveTest extends FileTestCase {
}
}
+/**
+ * Deletion related tests on remote filesystems.
+ */
+class RemoteFileUnmanagedDeleteRecursiveTest extends FileUnmanagedDeleteRecursiveTest {
+ public static function getInfo() {
+ $info = parent::getInfo();
+ $info['group'] = 'File API (remote)';
+ return $info;
+ }
+
+ function setUp() {
+ parent::setUp('file_test');
+ variable_set('file_default_scheme', 'dummy-remote');
+ }
+}
/**
* Unmanaged move related tests.
@@ -1310,6 +1406,21 @@ class FileUnmanagedMoveTest extends FileTestCase {
}
}
+/**
+ * Unmanaged move related tests on remote filesystems.
+ */
+class RemoteFileUnmanagedMoveTest extends FileUnmanagedMoveTest {
+ public static function getInfo() {
+ $info = parent::getInfo();
+ $info['group'] = 'File API (remote)';
+ return $info;
+ }
+
+ function setUp() {
+ parent::setUp('file_test');
+ variable_set('file_default_scheme', 'dummy-remote');
+ }
+}
/**
* Unmanaged copy related tests.
@@ -1400,6 +1511,22 @@ class FileUnmanagedCopyTest extends FileTestCase {
}
/**
+ * Unmanaged copy related tests on remote filesystems.
+ */
+class RemoteFileUnmanagedCopyTest extends FileUnmanagedCopyTest {
+ public static function getInfo() {
+ $info = parent::getInfo();
+ $info['group'] = 'File API (remote)';
+ return $info;
+ }
+
+ function setUp() {
+ parent::setUp('file_test');
+ variable_set('file_default_scheme', 'dummy-remote');
+ }
+}
+
+/**
* Deletion related tests.
*/
class FileDeleteTest extends FileHookTestCase {
diff --git a/modules/simpletest/tests/file_test.module b/modules/simpletest/tests/file_test.module
index 2865a1fa3..b3c43e071 100644
--- a/modules/simpletest/tests/file_test.module
+++ b/modules/simpletest/tests/file_test.module
@@ -37,6 +37,11 @@ function file_test_stream_wrappers() {
'class' => 'DrupalDummyStreamWrapper',
'description' => t('Dummy wrapper for simpletest.'),
),
+ 'dummy-remote' => array(
+ 'name' => t('Dummy files (remote)'),
+ 'class' => 'DrupalDummyRemoteStreamWrapper',
+ 'description' => t('Dummy wrapper for simpletest (remote).'),
+ ),
);
}
@@ -442,3 +447,15 @@ class DrupalDummyStreamWrapper extends DrupalLocalStreamWrapper {
}
}
+/**
+ * Helper class for testing the stream wrapper registry.
+ *
+ * Dummy remote stream wrapper implementation (dummy-remote://).
+ *
+ * Basically just the public scheme but not returning a local file for realpath.
+ */
+class DrupalDummyRemoteStreamWrapper extends DrupalPublicStreamWrapper {
+ function realpath() {
+ return FALSE;
+ }
+}
diff --git a/modules/system/image.gd.inc b/modules/system/image.gd.inc
index a3f76d4a6..39f86dc30 100644
--- a/modules/system/image.gd.inc
+++ b/modules/system/image.gd.inc
@@ -346,7 +346,7 @@ function image_gd_create_tmp(stdClass $image, $width, $height) {
*/
function image_gd_get_info(stdClass $image) {
$details = FALSE;
- $data = getimagesize(drupal_realpath($image->source));
+ $data = getimagesize($image->source);
if (isset($data) && is_array($data)) {
$extensions = array('1' => 'gif', '2' => 'jpg', '3' => 'png');