add filepath normalization tests

This commit is contained in:
uwetews
2015-12-21 22:45:49 +01:00
parent cd1d7c4d6a
commit 5af36fa255
3 changed files with 77 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
<?php
/*
* This file is part of the Smarty PHPUnit tests.
*/
/**
* class for path normalization tests
*
* @runTestsInSeparateProcess
* @preserveGlobalState disabled
* @backupStaticAttributes enabled
*/
class PathNormalizationTest extends PHPUnit_Smarty
{
/*
* Setup test fixture
*/
public function setUp()
{
$this->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);
}
}

View File