#653940 follow-up by Damien Tournoud: Clean-up of error handling from first stab at test reporting fixes.
parent
eb807e70e0
commit
8e38d459e5
|
@ -807,16 +807,20 @@ function drupal_http_request($url, array $options = array()) {
|
||||||
|
|
||||||
$result = new stdClass();
|
$result = new stdClass();
|
||||||
|
|
||||||
// Validate the passed URL. FILTER_VALIDATE_URL uses parse_url() internally,
|
// Parse the URL and make sure we can handle the schema.
|
||||||
// but unlike parse_url() itself, it will not throw a run-time notice for
|
$uri = @parse_url($url);
|
||||||
// bogus URLs.
|
|
||||||
if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) {
|
if ($uri == FALSE) {
|
||||||
$result->error = 'unable to parse URL';
|
$result->error = 'unable to parse URL';
|
||||||
$result->code = -1001;
|
$result->code = -1001;
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
$uri = parse_url($url);
|
if (!isset($uri['scheme'])) {
|
||||||
|
$result->error = 'missing schema';
|
||||||
|
$result->code = -1002;
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
timer_start(__FUNCTION__);
|
timer_start(__FUNCTION__);
|
||||||
|
|
||||||
|
|
|
@ -500,12 +500,7 @@ abstract class DrupalLocalStreamWrapper implements DrupalStreamWrapperInterface
|
||||||
public function url_stat($uri, $flags) {
|
public function url_stat($uri, $flags) {
|
||||||
$this->uri = $uri;
|
$this->uri = $uri;
|
||||||
if ($flags & STREAM_URL_STAT_QUIET) {
|
if ($flags & STREAM_URL_STAT_QUIET) {
|
||||||
if (file_exists($this->getLocalPath())) {
|
return @stat($this->getLocalPath());
|
||||||
return stat($this->getLocalPath());
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return stat($this->getLocalPath());
|
return stat($this->getLocalPath());
|
||||||
|
|
|
@ -489,11 +489,7 @@ function field_sql_storage_field_storage_query($field_id, $conditions, $options)
|
||||||
foreach ($conditions as $condition) {
|
foreach ($conditions as $condition) {
|
||||||
// A condition is either a (column, value, operator) triple, or a
|
// A condition is either a (column, value, operator) triple, or a
|
||||||
// (column, value) pair with implied operator.
|
// (column, value) pair with implied operator.
|
||||||
list($column, $value) = $condition;
|
@list($column, $value, $operator) = $condition;
|
||||||
$operator = NULL;
|
|
||||||
if (isset($condition[2])) {
|
|
||||||
$operator = $condition[2];
|
|
||||||
}
|
|
||||||
// Translate operator and value if needed.
|
// Translate operator and value if needed.
|
||||||
switch ($operator) {
|
switch ($operator) {
|
||||||
case 'STARTS_WITH':
|
case 'STARTS_WITH':
|
||||||
|
|
|
@ -793,12 +793,10 @@ function _filter_tips($format_id, $long = FALSE) {
|
||||||
* A DOMDocument that represents the loaded (X)HTML snippet.
|
* A DOMDocument that represents the loaded (X)HTML snippet.
|
||||||
*/
|
*/
|
||||||
function filter_dom_load($text) {
|
function filter_dom_load($text) {
|
||||||
// Suppress all libxml warnings during loading of HTML.
|
// Ignore warnings during HTML soup loading.
|
||||||
libxml_use_internal_errors(TRUE);
|
$dom_document = @DOMDocument::loadHTML('<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>' . $text . '</body></html>');
|
||||||
$document = new DOMDocument();
|
|
||||||
$document->loadHTML('<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>' . $text . '</body></html>');
|
|
||||||
|
|
||||||
return $document;
|
return $dom_document;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1387,16 +1387,14 @@ class DrupalWebTestCase extends DrupalTestCase {
|
||||||
*/
|
*/
|
||||||
protected function parse() {
|
protected function parse() {
|
||||||
if (!$this->elements) {
|
if (!$this->elements) {
|
||||||
// Suppress all libxml warnings during loading of HTML.
|
// DOM can load HTML soup. But, HTML soup can throw warnings, suppress
|
||||||
// @todo Remove this when core produces XHTML valid output.
|
// them.
|
||||||
libxml_use_internal_errors(TRUE);
|
@$htmlDom = DOMDocument::loadHTML($this->content);
|
||||||
$document = new DOMDocument();
|
if ($htmlDom) {
|
||||||
$result = $document->loadHTML($this->content);
|
|
||||||
if ($result) {
|
|
||||||
$this->pass(t('Valid HTML found on "@path"', array('@path' => $this->getUrl())), t('Browser'));
|
$this->pass(t('Valid HTML found on "@path"', array('@path' => $this->getUrl())), t('Browser'));
|
||||||
// It's much easier to work with simplexml than DOM, luckily enough
|
// It's much easier to work with simplexml than DOM, luckily enough
|
||||||
// we can just simply import our DOM tree.
|
// we can just simply import our DOM tree.
|
||||||
$this->elements = simplexml_import_dom($document);
|
$this->elements = simplexml_import_dom($htmlDom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!$this->elements) {
|
if (!$this->elements) {
|
||||||
|
|
|
@ -801,8 +801,8 @@ class DrupalHTTPRequestTestCase extends DrupalWebTestCase {
|
||||||
|
|
||||||
// Parse URL schema.
|
// Parse URL schema.
|
||||||
$missing_scheme = drupal_http_request('example.com/path');
|
$missing_scheme = drupal_http_request('example.com/path');
|
||||||
$this->assertEqual($missing_scheme->code, -1001, t('Returned with "-1001" error code.'));
|
$this->assertEqual($missing_scheme->code, -1002, t('Returned with "-1002" error code.'));
|
||||||
$this->assertEqual($missing_scheme->error, 'unable to parse URL', t('Returned with "unable to parse URL" error message.'));
|
$this->assertEqual($missing_scheme->error, 'missing schema', t('Returned with "missing schema" error message.'));
|
||||||
|
|
||||||
$unable_to_parse = drupal_http_request('http:///path');
|
$unable_to_parse = drupal_http_request('http:///path');
|
||||||
$this->assertEqual($unable_to_parse->code, -1001, t('Returned with "-1001" error code.'));
|
$this->assertEqual($unable_to_parse->code, -1001, t('Returned with "-1001" error code.'));
|
||||||
|
@ -860,8 +860,8 @@ class DrupalHTTPRequestTestCase extends DrupalWebTestCase {
|
||||||
$this->assertFalse(isset($redirect_301->redirect_code), t('drupal_http_request does not follow 301 redirect if max_redirects = 0.'));
|
$this->assertFalse(isset($redirect_301->redirect_code), t('drupal_http_request does not follow 301 redirect if max_redirects = 0.'));
|
||||||
|
|
||||||
$redirect_invalid = drupal_http_request(url('system-test/redirect-noscheme', array('absolute' => TRUE)), array('max_redirects' => 1));
|
$redirect_invalid = drupal_http_request(url('system-test/redirect-noscheme', array('absolute' => TRUE)), array('max_redirects' => 1));
|
||||||
$this->assertEqual($redirect_invalid->code, -1001, t('301 redirect to invalid URL returned with error code !error.', array('!error' => $redirect_invalid->error)));
|
$this->assertEqual($redirect_invalid->code, -1002, t('301 redirect to invalid URL returned with error code !error.', array('!error' => $redirect_invalid->error)));
|
||||||
$this->assertEqual($redirect_invalid->error, 'unable to parse URL', t('301 redirect to invalid URL returned with error message "!error".', array('!error' => $redirect_invalid->error)));
|
$this->assertEqual($redirect_invalid->error, 'missing schema', t('301 redirect to invalid URL returned with error message "!error".', array('!error' => $redirect_invalid->error)));
|
||||||
|
|
||||||
$redirect_invalid = drupal_http_request(url('system-test/redirect-noparse', array('absolute' => TRUE)), array('max_redirects' => 1));
|
$redirect_invalid = drupal_http_request(url('system-test/redirect-noparse', array('absolute' => TRUE)), array('max_redirects' => 1));
|
||||||
$this->assertEqual($redirect_invalid->code, -1001, t('301 redirect to invalid URL returned with error message code "!error".', array('!error' => $redirect_invalid->error)));
|
$this->assertEqual($redirect_invalid->code, -1001, t('301 redirect to invalid URL returned with error message code "!error".', array('!error' => $redirect_invalid->error)));
|
||||||
|
|
|
@ -728,9 +728,7 @@ class FileDirectoryTest extends FileTestCase {
|
||||||
|
|
||||||
// Remove .htaccess file to then test that it gets re-created.
|
// Remove .htaccess file to then test that it gets re-created.
|
||||||
$directory = file_directory_path();
|
$directory = file_directory_path();
|
||||||
if (file_exists($directory . '/.htaccess')) {
|
@unlink($directory . '/.htaccess');
|
||||||
unlink($directory . '/.htaccess');
|
|
||||||
}
|
|
||||||
$this->assertFalse(is_file($directory . '/.htaccess'), t('Successfully removed the .htaccess file in the files directory.'), 'File');
|
$this->assertFalse(is_file($directory . '/.htaccess'), t('Successfully removed the .htaccess file in the files directory.'), 'File');
|
||||||
file_ensure_htaccess();
|
file_ensure_htaccess();
|
||||||
$this->assertTrue(is_file($directory . '/.htaccess'), t('Successfully re-created the .htaccess file in the files directory.'), 'File');
|
$this->assertTrue(is_file($directory . '/.htaccess'), t('Successfully re-created the .htaccess file in the files directory.'), 'File');
|
||||||
|
|
Loading…
Reference in New Issue