aboutsummaryrefslogtreecommitdiffstats
path: root/tests/filesystem/realpath_test.php
diff options
context:
space:
mode:
authorMateBartus <mate.bartus@gmail.com>2015-03-12 00:25:00 +0100
committerMateBartus <mate.bartus@gmail.com>2015-04-16 13:24:10 +0200
commit4bdef6fd21a5dcab455b0cd1ee2652de606929c3 (patch)
tree33eae92e90b43770b2c1e2e4508dbcf35d6bd7da /tests/filesystem/realpath_test.php
parentf86c5d905bb82967505ef3e07fa429b59c112871 (diff)
downloadforums-4bdef6fd21a5dcab455b0cd1ee2652de606929c3.tar
forums-4bdef6fd21a5dcab455b0cd1ee2652de606929c3.tar.gz
forums-4bdef6fd21a5dcab455b0cd1ee2652de606929c3.tar.bz2
forums-4bdef6fd21a5dcab455b0cd1ee2652de606929c3.tar.xz
forums-4bdef6fd21a5dcab455b0cd1ee2652de606929c3.zip
[ticket/13697] Moving filesystem related functions to filesystem service
* Moving filesystem service to \phpbb\filesystem namespace * Wraping Symfony's Filesystem component * Moving filesystem related functions from includes/functions.php into \phpbb\filesystem\filesystem Functions moved (and deprecated): - phpbb_chmod - phpbb_is_writable - phpbb_is_absolute - phpbb_own_realpath - phpbb_realpath * Adding interface for filesystem service PHPBB3-13697
Diffstat (limited to 'tests/filesystem/realpath_test.php')
-rw-r--r--tests/filesystem/realpath_test.php90
1 files changed, 90 insertions, 0 deletions
diff --git a/tests/filesystem/realpath_test.php b/tests/filesystem/realpath_test.php
new file mode 100644
index 0000000000..d994935f94
--- /dev/null
+++ b/tests/filesystem/realpath_test.php
@@ -0,0 +1,90 @@
+<?php
+/**
+ *
+ * This file is part of the phpBB Forum Software package.
+ *
+ * @copyright (c) phpBB Limited <https://www.phpbb.com>
+ * @license GNU General Public License, version 2 (GPL-2.0)
+ *
+ * For full copyright and license information, please see
+ * the docs/CREDITS.txt file.
+ *
+ */
+
+class phpbb_filesystem_realpath_test extends phpbb_test_case
+{
+ static protected $filesystem_own_realpath;
+
+ /** @var \phpbb\filesystem\filesystem_interface */
+ protected $filesystem;
+
+ static public function setUpBeforeClass()
+ {
+ parent::setUpBeforeClass();
+
+ $reflection_class = new ReflectionClass('\phpbb\filesystem\filesystem');
+ self::$filesystem_own_realpath = $reflection_class->getMethod('phpbb_own_realpath');
+ self::$filesystem_own_realpath->setAccessible(true);
+ }
+
+ public function setUp()
+ {
+ parent::setUp();
+
+ $this->filesystem = new \phpbb\filesystem\filesystem();
+ }
+
+ public function realpath_resolve_absolute_without_symlinks_data()
+ {
+ return array(
+ // Constant data
+ array(__DIR__, __DIR__),
+ array(__DIR__ . '/../filesystem/../filesystem', __DIR__),
+ array(__DIR__ . '/././', __DIR__),
+ array(__DIR__ . '/non_existent', false),
+
+ array(__FILE__, __FILE__),
+ array(__FILE__ . '../', false),
+ );
+ }
+
+ public function realpath_resolve_relative_without_symlinks_data()
+ {
+ if (!function_exists('getcwd'))
+ {
+ return array();
+ }
+
+ $filesystem = new \phpbb\filesystem\filesystem();
+ $relative_path = $filesystem->make_path_relative(__DIR__, getcwd());
+
+ return array(
+ array($relative_path, __DIR__),
+ array($relative_path . '../filesystem/../filesystem', __DIR__),
+ array($relative_path . '././', __DIR__),
+
+ array($relative_path . 'realpath_test.php', __FILE__),
+ );
+ }
+
+ /**
+ * @dataProvider realpath_resolve_absolute_without_symlinks_data
+ */
+ public function test_realpath_absolute_without_links($path, $expected)
+ {
+ $this->assertEquals($expected, self::$filesystem_own_realpath->invoke($this->filesystem, $path));
+ }
+
+ /**
+ * @dataProvider realpath_resolve_relative_without_symlinks_data
+ */
+ public function test_realpath_relative_without_links($path, $expected)
+ {
+ if (!function_exists('getcwd'))
+ {
+ $this->markTestSkipped('phpbb_own_realpath() cannot be tested with relative paths: getcwd is not available.');
+ }
+
+ $this->assertEquals($expected, self::$filesystem_own_realpath->invoke($this->filesystem, $path));
+ }
+}