mirror of
https://github.com/smarty-php/smarty.git
synced 2025-11-07 07:41:37 +01:00
Adds support for PHP8.0, dropping support for PHP7.0 and below.
Backwards incompatible changes:
- Dropped support for php asp tags in templates (removed from php since php7.0)
- Dropped deprecated API calls that where only accessible through SmartyBC
- Dropped support for {php} and {include_php} tags and embedded PHP in templates. Embedded PHP will now be passed through as is.
- Removed all PHP_VERSION_ID and compare_version checks and conditional code blocks that are now no longer required
- Dropped deprecated SMARTY_RESOURCE_CHAR_SET and SMARTY_RESOURCE_DATE_FORMAT constants
- Dropped deprecated Smarty::muteExpectedErrors and Smarty::unmuteExpectedErrors API methods
- Dropped deprecated $smarty->getVariable() method. Use $smarty->getTemplateVars() instead.
- $smarty->registerResource() no longer accepts an array of callback functions
See the changelog for more details.
Switched CI from Travis to Github CI.
79 lines
3.4 KiB
PHP
79 lines
3.4 KiB
PHP
<?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(): void
|
|
{
|
|
$this->setUpSmarty(dirname(__FILE__));
|
|
}
|
|
|
|
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/../..///.././././../aa/bb/cc/../../go/a.foo', true);
|
|
$this->assertEquals(getcwd() . DIRECTORY_SEPARATOR . 'foo' . DIRECTORY_SEPARATOR . 'aa'. DIRECTORY_SEPARATOR . 'go' . DIRECTORY_SEPARATOR .'a.foo', $d);
|
|
}
|
|
|
|
}
|