add unit tests for rewrite_relative_url and fix a number of bugs in it
This commit is contained in:
parent
24eb4c780f
commit
f679105cb2
|
@ -7074,6 +7074,14 @@
|
||||||
return $parts['scheme'] . "://" . $parts['host'] . $parts['path'];
|
return $parts['scheme'] . "://" . $parts['host'] . $parts['path'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a (possibly) relative URL to a absolute one.
|
||||||
|
*
|
||||||
|
* @param string $url Base URL (i.e. from where the document is)
|
||||||
|
* @param string $rel_url Possibly relative URL in the document
|
||||||
|
*
|
||||||
|
* @return string Absolute URL
|
||||||
|
*/
|
||||||
function rewrite_relative_url($url, $rel_url) {
|
function rewrite_relative_url($url, $rel_url) {
|
||||||
if (strpos($rel_url, "://") !== false) {
|
if (strpos($rel_url, "://") !== false) {
|
||||||
return $rel_url;
|
return $rel_url;
|
||||||
|
@ -7086,8 +7094,15 @@
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$parts = parse_url($url);
|
$parts = parse_url($url);
|
||||||
|
if (!isset($parts['path'])) {
|
||||||
$parts['path'] = dirname($parts['path']) . "/$rel_url";
|
$parts['path'] = '/';
|
||||||
|
}
|
||||||
|
$dir = $parts['path'];
|
||||||
|
if (substr($dir, -1) !== '/') {
|
||||||
|
$dir = dirname($parts['path']);
|
||||||
|
$dir !== '/' && $dir .= '/';
|
||||||
|
}
|
||||||
|
$parts['path'] = $dir . $rel_url;
|
||||||
|
|
||||||
return build_url($parts);
|
return build_url($parts);
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,6 +177,69 @@ HTM
|
||||||
);
|
);
|
||||||
$this->assertFalse(url_is_html($this->tmpFile));
|
$this->assertFalse(url_is_html($this->tmpFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test rewrite_relative_url() with a relative path
|
||||||
|
*/
|
||||||
|
public function testRewriteRelativeUrlRelative()
|
||||||
|
{
|
||||||
|
$this->assertEquals(
|
||||||
|
'http://tt-rss.org/foo/bar',
|
||||||
|
rewrite_relative_url('http://tt-rss.org', 'foo/bar')
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
'http://tt-rss.org/foo/bar',
|
||||||
|
rewrite_relative_url('http://tt-rss.org/', 'foo/bar')
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
'http://tt-rss.org/bar',
|
||||||
|
rewrite_relative_url('http://tt-rss.org/foo', 'bar')
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
'http://tt-rss.org/foo/bar',
|
||||||
|
rewrite_relative_url('http://tt-rss.org/foo/', 'bar')
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
'http://tt-rss.org/f/o/bar',
|
||||||
|
rewrite_relative_url('http://tt-rss.org/f/o/o', 'bar')
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
'http://tt-rss.org/f/o/o/bar',
|
||||||
|
rewrite_relative_url('http://tt-rss.org/f/o/o/', 'bar')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test rewrite_relative_url() with an absolute path
|
||||||
|
*/
|
||||||
|
public function testRewriteRelativeUrlAbsolutePath()
|
||||||
|
{
|
||||||
|
$this->assertEquals(
|
||||||
|
'http://tt-rss.org/bar/',
|
||||||
|
rewrite_relative_url('http://tt-rss.org/foo/', '/bar/')
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
'http://tt-rss.org/bar/',
|
||||||
|
rewrite_relative_url('http://tt-rss.org/so/what/is/next', '/bar/')
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
'http://tt-rss.org/bar/',
|
||||||
|
rewrite_relative_url('http://tt-rss.org/so/what/is/next/', '/bar/')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test rewrite_relative_url() with an absolute URL
|
||||||
|
*/
|
||||||
|
public function testRewriteRelativeUrlAbsoluteUrl()
|
||||||
|
{
|
||||||
|
$this->assertEquals(
|
||||||
|
'http://example.org/bar/',
|
||||||
|
rewrite_relative_url('http://tt-rss.org/foo/', 'http://example.org/bar/')
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
Loading…
Reference in New Issue