diff --git a/tests/UnitTests/A_0/PathNormalization/PathNormalizationTest.php b/tests/UnitTests/A_0/PathNormalization/PathNormalizationTest.php new file mode 100644 index 00000000..08721bf5 --- /dev/null +++ b/tests/UnitTests/A_0/PathNormalization/PathNormalizationTest.php @@ -0,0 +1,77 @@ +setUpSmarty(__DIR__); + } + + public function testNormalizeToAbsolute() { + $d = $this->smarty->_realpath('./foo/a.foo', true); + $this->assertEquals(getcwd() . DIRECTORY_SEPARATOR . 'foo' . DIRECTORY_SEPARATOR . 'a.foo', $d); + } + public function testNormalizeAbsolute() { + if (DIRECTORY_SEPARATOR == '/') { + $d = $this->smarty->_realpath('\\foo\\a.foo', true); + $this->assertEquals('/foo/a.foo', $d); + } else { + $d = $this->smarty->_realpath('/foo/a.foo', true); + $this->assertEquals(substr(getcwd(), 0, 2) . DIRECTORY_SEPARATOR . 'foo' . DIRECTORY_SEPARATOR . 'a.foo', $d); + $d = $this->smarty->_realpath(substr(getcwd(), 0, 2) . '/foo/a.foo', true); + $this->assertEquals(substr(getcwd(), 0, 2) . DIRECTORY_SEPARATOR . 'foo' . DIRECTORY_SEPARATOR . 'a.foo', $d); + } + } + public function testNormalizeToAbsoluteNoStart() { + $d = $this->smarty->_realpath('foo/a.foo', true); + $this->assertEquals(getcwd() . DIRECTORY_SEPARATOR . 'foo' . DIRECTORY_SEPARATOR . 'a.foo', $d); + } + public function testNormalizeToAbsoluteNoStart2() { + $d = $this->smarty->_realpath('a.foo', true); + $this->assertEquals(getcwd() . DIRECTORY_SEPARATOR . 'a.foo', $d); + } + public function testNormalizeToAbsolutePathLeadingDot() { + $d = $this->smarty->_realpath('.foo/a.foo', true); + $this->assertEquals(getcwd() . DIRECTORY_SEPARATOR . '.foo' . DIRECTORY_SEPARATOR . 'a.foo', $d); + } + public function testNormalizeToAbsolutePathTrailingDot() { + $d = $this->smarty->_realpath('./foo./a.foo', true); + $this->assertEquals(getcwd() . DIRECTORY_SEPARATOR . 'foo.' . DIRECTORY_SEPARATOR . 'a.foo', $d); + } + public function testNormalizeToAbsolutePathBubbleUp() { + $ds = '\\' . DIRECTORY_SEPARATOR; + $prefix = preg_replace("#[{$ds}][^{$ds}]+$#", '', getcwd()); + $d = $this->smarty->_realpath('./../a.foo', true); + $this->assertEquals($prefix . DIRECTORY_SEPARATOR . 'a.foo', $d); + } + public function testNormalizeToAbsolutePathBubbleUp2() { + $ds = '\\' . DIRECTORY_SEPARATOR; + $prefix = preg_replace("#[{$ds}][^{$ds}]+$#", '', getcwd()); + $d = $this->smarty->_realpath('././../././a.foo', true); + $this->assertEquals($prefix . DIRECTORY_SEPARATOR . 'a.foo', $d); + } + public function testNormalizeToAbsolutePathBubbleUp3() { + $ds = '\\' . DIRECTORY_SEPARATOR; + $prefix = preg_replace("#[{$ds}][^{$ds}]+[{$ds}][^{$ds}]+$#", '', getcwd()); + $d = $this->smarty->_realpath('././.././.././a.foo', true); + $this->assertEquals($prefix . DIRECTORY_SEPARATOR . 'a.foo', $d); + } + public function testNormalizeToAbsoluteKomplex() { + $d = $this->smarty->_realpath('./foo/\\./bar/jo/wie/so/../../go/../..//.././../a.foo', true); + $this->assertEquals(getcwd() . DIRECTORY_SEPARATOR . 'foo' . DIRECTORY_SEPARATOR . 'a.foo', $d); + } + +} diff --git a/tests/UnitTests/A_0/PathNormalization/cache/dummy.txt b/tests/UnitTests/A_0/PathNormalization/cache/dummy.txt new file mode 100644 index 00000000..e69de29b diff --git a/tests/UnitTests/A_0/PathNormalization/templates_c/dummy.txt b/tests/UnitTests/A_0/PathNormalization/templates_c/dummy.txt new file mode 100644 index 00000000..e69de29b