aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/phpbb/filesystem.php12
-rw-r--r--tests/filesystem/web_root_path_test.php49
2 files changed, 49 insertions, 12 deletions
diff --git a/phpBB/phpbb/filesystem.php b/phpBB/phpbb/filesystem.php
index e8fd03d103..6c037b2656 100644
--- a/phpBB/phpbb/filesystem.php
+++ b/phpBB/phpbb/filesystem.php
@@ -26,6 +26,9 @@ class phpbb_filesystem
/** @var string */
protected $phpbb_root_path;
+ /** @var string */
+ protected $web_root_path;
+
/**
* Constructor
*
@@ -82,16 +85,15 @@ class phpbb_filesystem
return $this->phpbb_root_path;
}
- static $path;
- if (null !== $path)
+ if (null !== $this->web_root_path)
{
- return $path;
+ return $this->web_root_path;
}
$path_info = $symfony_request->getPathInfo();
if ($path_info === '/')
{
- return $path = $this->phpbb_root_path;
+ return $this->web_root_path = $this->phpbb_root_path;
}
$path_info = $this->clean_path($path_info);
@@ -106,7 +108,7 @@ class phpbb_filesystem
$corrections -= 1;
}
- return $path = $this->phpbb_root_path . str_repeat('../', $corrections);
+ return $this->web_root_path = $this->phpbb_root_path . str_repeat('../', $corrections);
}
/**
diff --git a/tests/filesystem/web_root_path_test.php b/tests/filesystem/web_root_path_test.php
index 3c9637fe06..badc2fab58 100644
--- a/tests/filesystem/web_root_path_test.php
+++ b/tests/filesystem/web_root_path_test.php
@@ -18,9 +18,7 @@ class phpbb_filesystem_web_root_path_test extends phpbb_test_case
$this->set_phpbb_root_path();
- global $phpbb_filesystem;
-
- $phpbb_filesystem = $this->filesystem = new phpbb_filesystem($this->phpbb_root_path);
+ $this->filesystem = new phpbb_filesystem($this->phpbb_root_path);
}
/**
@@ -49,7 +47,6 @@ class phpbb_filesystem_web_root_path_test extends phpbb_test_case
return array(
array(
$this->phpbb_root_path . 'test.php',
- $this->phpbb_root_path . 'test.php',
),
array(
'test.php',
@@ -57,7 +54,28 @@ class phpbb_filesystem_web_root_path_test extends phpbb_test_case
),
array(
$this->phpbb_root_path . $this->phpbb_root_path . 'test.php',
- $this->phpbb_root_path . $this->phpbb_root_path . 'test.php',
+ ),
+ array(
+ $this->phpbb_root_path . 'test.php',
+ $this->phpbb_root_path . 'test.php',
+ '/',
+ ),
+ array(
+ $this->phpbb_root_path . 'test.php',
+ $this->phpbb_root_path . 'test.php',
+ '//',
+ ),
+ array(
+ $this->phpbb_root_path . 'test.php',
+ $this->phpbb_root_path . '../test.php',
+ '//',
+ 'foo/bar.php',
+ 'bar.php',
+ ),
+ array(
+ $this->phpbb_root_path . 'test.php',
+ $this->phpbb_root_path . '../../test.php',
+ '////',
),
);
}
@@ -65,8 +83,25 @@ class phpbb_filesystem_web_root_path_test extends phpbb_test_case
/**
* @dataProvider update_web_root_path_data
*/
- public function test_update_web_root_path($input, $expected)
+ public function test_update_web_root_path($input, $expected = null, $getPathInfo = null, $getRequestUri = null, $getScriptName = null)
{
- $this->assertEquals($expected, $this->filesystem->update_web_root_path($input));
+ $expected = ($expected === null) ? $input : $expected;
+
+ $symfony_request = null;
+ if ($getPathInfo !== null)
+ {
+ $symfony_request = $this->getMock("Symfony\Component\HttpFoundation\Request");
+ $symfony_request->expects($this->any())
+ ->method('getPathInfo')
+ ->will($this->returnValue($getPathInfo));
+ $symfony_request->expects($this->any())
+ ->method('getRequestUri')
+ ->will($this->returnValue($getRequestUri));
+ $symfony_request->expects($this->any())
+ ->method('getScriptName')
+ ->will($this->returnValue($getScriptName));
+ }
+
+ $this->assertEquals($expected, $this->filesystem->update_web_root_path($input, $symfony_request));
}
}