tests: add stub autoloader, add a few more rewrite_relative tests

This commit is contained in:
Andrew Dolgov 2022-03-22 14:32:32 +03:00
parent 1c4f7ab3b8
commit e35a4a1306
4 changed files with 27 additions and 17 deletions

1
.gitignore vendored
View File

@ -12,3 +12,4 @@ Thumbs.db
/lock/*
/.vscode/settings.json
/vendor/**/.git
/.phpunit.result.cache

View File

@ -26,6 +26,7 @@ class UrlHelper {
/** @var string */
static $fetch_last_modified;
/** @var string */
static $fetch_effective_url;
@ -68,6 +69,8 @@ class UrlHelper {
$rel_parts = parse_url($rel_url);
if (!$rel_url) return $base_url;
/**
* If parse_url failed to parse $rel_url return false to match the current "invalid thing" behavior
* of UrlHelper::validate().
@ -107,7 +110,7 @@ class UrlHelper {
$rel_parts['host'] = $base_parts['host'] ?? "";
$rel_parts['scheme'] = $base_parts['scheme'] ?? "";
if (isset($rel_parts['path'])) {
if ($rel_parts['path'] ?? false) {
// we append dirname() of base path to relative URL path as per RFC 3986 section 5.2.2
$base_path = with_trailing_slash(dirname($base_parts['path']));

View File

@ -1,24 +1,9 @@
<?php
set_include_path(dirname(__DIR__) ."/include" . PATH_SEPARATOR .
get_include_path());
require_once "autoload.php";
require_once "functions.php";
use PHPUnit\Framework\TestCase;
final class UrlHelperTest extends TestCase {
public function testCanBeUsedAsString(): void {
/*$this->assertEquals(
'http://example.com/example.html',
UrlHelper::rewrite_relative('http://example.com/example/', '/example.html')
);
$this->assertEquals(
'http://example.com/example/example.html',
UrlHelper::rewrite_relative('http://example.com/example/', 'example.html')
);*/
public function test_rewrite_relative(): void {
// protocol-neutral URL
$this->assertEquals(
'https://example.com/example.html',
@ -50,5 +35,20 @@ final class UrlHelperTest extends TestCase {
UrlHelper::rewrite_relative('https://apod.nasa.gov/apod/ap220315.html', './image/2203/Road2Stars_EsoHoralek_1080.jpg')
);
$this->assertEquals(
'http://example.com/test/url',
UrlHelper::rewrite_relative('http://example.com/test/url', '')
);
$this->assertEquals(
'http://www.example.com/test',
UrlHelper::rewrite_relative('http://www.example2.com ', 'http://www.example.com/test')
);
$this->assertEquals(
'http://www.example.com/test',
UrlHelper::rewrite_relative('http://www.example.com/test2 ', 'http://www.example.com/test')
);
}
}

6
tests/autoload.php Normal file
View File

@ -0,0 +1,6 @@
<?php
set_include_path(dirname(__DIR__) ."/include" . PATH_SEPARATOR .
get_include_path());
require_once "autoload.php";
require_once "functions.php";