1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-03-14 04:30:29 +01:00

[ticket/13073] Add path regex to get_preg_expression() and add unit tests

We're now calling get_preg_expression() instead of hardcoding the regex into
the helper route method.

PHPBB3-13073
This commit is contained in:
Marc Alexander 2014-09-19 13:50:56 +02:00
parent 4186ced479
commit 6fd54436ee
3 changed files with 44 additions and 1 deletions

View File

@ -3317,6 +3317,11 @@ function get_preg_expression($mode)
case 'table_prefix':
return '#^[a-zA-Z][a-zA-Z0-9_]*$#';
break;
// Matches the predecing dot
case 'path_remove_dot_trailing_slash':
return '#^(?:(\.)?)+(?:(.+)?)+(?:([\\/\\\])$)#';
break;
}
return '';

View File

@ -147,7 +147,7 @@ class helper
}
else
{
$base_url .= preg_replace('#^(?:(\.))+(?:(.+)?)+(?:([\\/\\\])$)#', '$2', $this->phpbb_root_path);
$base_url .= preg_replace(get_preg_expression('path_remove_dot_trailing_slash'), '$2', $this->phpbb_root_path);
}
$base_url = $this->filesystem->clean_path($base_url);

View File

@ -0,0 +1,38 @@
<?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.
*
*/
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
class phpbb_functions_get_preg_expression_test extends phpbb_test_case
{
public function data_path_remove_dot_trailing_slash()
{
return array(
array('/..', '$2', './../'),
array('/..', '$2', '/../'),
array('', '$2', ''),
array('', '$2', './'),
array('', '$2', '/'),
array('/../..', '$2', './../../'),
array('/../..', '$2', '/../../'),
);
}
/**
* @dataProvider data_path_remove_dot_trailing_slash
*/
public function test_path_remove_dot_trailing_slash($expected, $replace, $input)
{
$this->assertSame($expected, preg_replace(get_preg_expression('path_remove_dot_trailing_slash'), $replace, $input));
}
}