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:
parent
4186ced479
commit
6fd54436ee
@ -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 '';
|
||||
|
@ -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);
|
||||
|
38
tests/functions/get_preg_expression_test.php
Normal file
38
tests/functions/get_preg_expression_test.php
Normal 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));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user