summaryrefslogtreecommitdiff
path: root/modules/simpletest
diff options
context:
space:
mode:
authorwebchick <webchick@24967.no-reply.drupal.org>2012-01-21 10:52:40 -0800
committerwebchick <webchick@24967.no-reply.drupal.org>2012-01-21 10:52:40 -0800
commit8164434505e4292e5d584eebbf7b05b403d9c07b (patch)
tree723b2507f6382b71902eb4bb7aa2a6c37a1e3c95 /modules/simpletest
parent283523192421f0708c01f7fa08d5814442c757a5 (diff)
downloadbrdo-8164434505e4292e5d584eebbf7b05b403d9c07b.tar.gz
brdo-8164434505e4292e5d584eebbf7b05b403d9c07b.tar.bz2
Issue #278425 by andypost, droplet, OnkelTem, chx, c960657, drewish, kotnik, realityloop: Change notice for: Using basename() is not locale safe.
Diffstat (limited to 'modules/simpletest')
-rw-r--r--modules/simpletest/drupal_web_test_case.php11
-rw-r--r--modules/simpletest/simpletest.pages.inc2
-rw-r--r--modules/simpletest/tests/common.test2
-rw-r--r--modules/simpletest/tests/file.test40
-rw-r--r--modules/simpletest/tests/file_test.module2
5 files changed, 39 insertions, 18 deletions
diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php
index 71c583315..9095e22e1 100644
--- a/modules/simpletest/drupal_web_test_case.php
+++ b/modules/simpletest/drupal_web_test_case.php
@@ -1672,7 +1672,16 @@ class DrupalWebTestCase extends DrupalTestCase {
* An header.
*/
protected function curlHeaderCallback($curlHandler, $header) {
- $this->headers[] = $header;
+ // Header fields can be extended over multiple lines by preceding each
+ // extra line with at least one SP or HT. They should be joined on receive.
+ // Details are in RFC2616 section 4.
+ if ($header[0] == ' ' || $header[0] == "\t") {
+ // Normalize whitespace between chucks.
+ $this->headers[] = array_pop($this->headers) . ' ' . trim($header);
+ }
+ else {
+ $this->headers[] = $header;
+ }
// Errors are being sent via X-Drupal-Assertion-* headers,
// generated by _drupal_log_error() in the exact form required
diff --git a/modules/simpletest/simpletest.pages.inc b/modules/simpletest/simpletest.pages.inc
index 696d14718..d1a7e4ade 100644
--- a/modules/simpletest/simpletest.pages.inc
+++ b/modules/simpletest/simpletest.pages.inc
@@ -254,7 +254,7 @@ function simpletest_result_form($form, &$form_state, $test_id) {
$row = array();
$row[] = $assertion->message;
$row[] = $assertion->message_group;
- $row[] = basename($assertion->file);
+ $row[] = drupal_basename($assertion->file);
$row[] = $assertion->line;
$row[] = $assertion->function;
$row[] = simpletest_result_status_image($assertion->status);
diff --git a/modules/simpletest/tests/common.test b/modules/simpletest/tests/common.test
index 987efbf3a..4a0240002 100644
--- a/modules/simpletest/tests/common.test
+++ b/modules/simpletest/tests/common.test
@@ -2072,7 +2072,7 @@ class DrupalErrorCollectionUnitTest extends DrupalWebTestCase {
function assertError($error, $group, $function, $file, $message = NULL) {
$this->assertEqual($error['group'], $group, t("Group was %group", array('%group' => $group)));
$this->assertEqual($error['caller']['function'], $function, t("Function was %function", array('%function' => $function)));
- $this->assertEqual(basename($error['caller']['file']), $file, t("File was %file", array('%file' => $file)));
+ $this->assertEqual(drupal_basename($error['caller']['file']), $file, t("File was %file", array('%file' => $file)));
if (isset($message)) {
$this->assertEqual($error['message'], $message, t("Message was %message", array('%message' => $message)));
}
diff --git a/modules/simpletest/tests/file.test b/modules/simpletest/tests/file.test
index 55e3b0aa3..4c56bfcce 100644
--- a/modules/simpletest/tests/file.test
+++ b/modules/simpletest/tests/file.test
@@ -198,7 +198,9 @@ class FileTestCase extends DrupalWebTestCase {
*/
function createFile($filepath = NULL, $contents = NULL, $scheme = NULL) {
if (!isset($filepath)) {
- $filepath = $this->randomName();
+ // Prefix with non-latin characters to ensure that all file-related
+ // tests work with international filenames.
+ $filepath = 'Файл для тестирования ' . $this->randomName();
}
if (!isset($scheme)) {
$scheme = file_default_scheme();
@@ -214,7 +216,7 @@ class FileTestCase extends DrupalWebTestCase {
$file = new stdClass();
$file->uri = $filepath;
- $file->filename = basename($file->uri);
+ $file->filename = drupal_basename($file->uri);
$file->filemime = 'text/plain';
$file->uid = 1;
$file->timestamp = REQUEST_TIME;
@@ -372,11 +374,11 @@ class FileValidatorTest extends DrupalWebTestCase {
$this->image = new stdClass();
$this->image->uri = 'misc/druplicon.png';
- $this->image->filename = basename($this->image->uri);
+ $this->image->filename = drupal_basename($this->image->uri);
$this->non_image = new stdClass();
$this->non_image->uri = 'misc/jquery.js';
- $this->non_image->filename = basename($this->non_image->uri);
+ $this->non_image->filename = drupal_basename($this->non_image->uri);
}
/**
@@ -539,7 +541,7 @@ class FileUnmanagedSaveDataTest extends FileTestCase {
// 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('asdf.txt', drupal_basename($filepath), t('File was named correctly.'));
$this->assertEqual($contents, file_get_contents($filepath), t('Contents of the file are correct.'));
$this->assertFilePermissions($filepath, variable_get('file_chmod_file', 0664));
}
@@ -666,7 +668,7 @@ class FileSaveUploadTest extends FileHookTestCase {
$this->drupalPost('file-test/upload', $edit, t('Submit'));
$this->assertResponse(200, t('Received a 200 response for posted test file.'));
$this->assertRaw(t('You WIN!'));
- $this->assertTrue(is_file('temporary://' . $dir . '/' . trim(basename($image3_realpath))));
+ $this->assertTrue(is_file('temporary://' . $dir . '/' . trim(drupal_basename($image3_realpath))));
// Check that file_load_multiple() with no arguments returns FALSE.
$this->assertFalse(file_load_multiple(), t('No files were loaded.'));
@@ -2202,7 +2204,7 @@ class FileSaveDataTest extends FileHookTestCase {
$this->assertTrue($result, t('Unnamed file saved correctly.'));
$this->assertEqual(file_default_scheme(), file_uri_scheme($result->uri), t("File was placed in Drupal's files directory."));
- $this->assertEqual($result->filename, basename($result->uri), t("Filename was set to the file's basename."));
+ $this->assertEqual($result->filename, drupal_basename($result->uri), t("Filename was set to the file's basename."));
$this->assertEqual($contents, file_get_contents($result->uri), t('Contents of the file are correct.'));
$this->assertEqual($result->filemime, 'application/octet-stream', t('A MIME type was set.'));
$this->assertEqual($result->status, FILE_STATUS_PERMANENT, t("The file's status was set to permanent."));
@@ -2220,11 +2222,14 @@ class FileSaveDataTest extends FileHookTestCase {
function testWithFilename() {
$contents = $this->randomName(8);
- $result = file_save_data($contents, 'public://' . 'asdf.txt');
+ // Using filename with non-latin characters.
+ $filename = 'Текстовый файл.txt';
+
+ $result = file_save_data($contents, 'public://' . $filename);
$this->assertTrue($result, t('Unnamed file saved correctly.'));
$this->assertEqual('public', file_uri_scheme($result->uri), t("File was placed in Drupal's files directory."));
- $this->assertEqual('asdf.txt', basename($result->uri), t('File was named correctly.'));
+ $this->assertEqual($filename, drupal_basename($result->uri), t('File was named correctly.'));
$this->assertEqual($contents, file_get_contents($result->uri), t('Contents of the file are correct.'));
$this->assertEqual($result->filemime, 'text/plain', t('A MIME type was set.'));
$this->assertEqual($result->status, FILE_STATUS_PERMANENT, t("The file's status was set to permanent."));
@@ -2336,7 +2341,10 @@ class FileDownloadTest extends FileTestCase {
// Test generating an URL to a created file.
$file = $this->createFile();
$url = file_create_url($file->uri);
- $this->assertEqual($GLOBALS['base_url'] . '/' . file_stream_wrapper_get_instance_by_scheme('public')->getDirectoryPath() . '/' . $file->filename, $url, t('Correctly generated a URL for a created file.'));
+ // URLs can't contain characters outside the ASCII set so $filename has to be
+ // encoded.
+ $filename = $GLOBALS['base_url'] . '/' . file_stream_wrapper_get_instance_by_scheme('public')->getDirectoryPath() . '/' . rawurlencode($file->filename);
+ $this->assertEqual($filename, $url, t('Correctly generated a URL for a created file.'));
$this->drupalHead($url);
$this->assertResponse(200, t('Confirmed that the generated URL is correct by downloading the created file.'));
@@ -2356,16 +2364,20 @@ class FileDownloadTest extends FileTestCase {
// Set file downloads to private so handler functions get called.
// Create a file.
- $file = $this->createFile(NULL, NULL, 'private');
+ $contents = $this->randomName(8);
+ $file = $this->createFile(NULL, $contents, 'private');
$url = file_create_url($file->uri);
// Set file_test access header to allow the download.
file_test_set_return('download', array('x-foo' => 'Bar'));
- $this->drupalHead($url);
+ $this->drupalGet($url);
$headers = $this->drupalGetHeaders();
- $this->assertEqual($headers['x-foo'] , 'Bar', t('Found header set by file_test module on private download.'));
+ $this->assertEqual($headers['x-foo'], 'Bar', t('Found header set by file_test module on private download.'));
$this->assertResponse(200, t('Correctly allowed access to a file when file_test provides headers.'));
+ // Test that the file transfered correctly.
+ $this->assertEqual($contents, $this->content, t('Contents of the file are correct.'));
+
// Deny access to all downloads via a -1 header.
file_test_set_return('download', -1);
$this->drupalHead($url);
@@ -2602,7 +2614,7 @@ class FileMimeTypeTest extends DrupalWebTestCase {
* Test mapping of mimetypes from filenames.
*/
public function testFileMimeTypeDetection() {
- $prefix = 'simpletest://';
+ $prefix = 'public://';
$test_case = array(
'test.jar' => 'application/java-archive',
diff --git a/modules/simpletest/tests/file_test.module b/modules/simpletest/tests/file_test.module
index b3c43e071..1b11316f9 100644
--- a/modules/simpletest/tests/file_test.module
+++ b/modules/simpletest/tests/file_test.module
@@ -138,7 +138,7 @@ function _file_test_form_submit(&$form, &$form_state) {
/**
* Reset/initialize the history of calls to the file_* hooks.
*
- * @see file_test_get_calls()
+ * @see file_test_get_calls()
* @see file_test_reset()
*/
function file_test_reset() {