mirror of
https://github.com/barryvdh/ReflectionDocBlock.git
synced 2026-08-18 01:57:13 +00:00
Merge pull request #247 from phpDocumentor/safe_preg_split
Introduce safe preg_split
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace phpDocumentor\Reflection\Exception;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use const PREG_BACKTRACK_LIMIT_ERROR;
|
||||
use const PREG_BAD_UTF8_ERROR;
|
||||
use const PREG_BAD_UTF8_OFFSET_ERROR;
|
||||
use const PREG_INTERNAL_ERROR;
|
||||
use const PREG_JIT_STACKLIMIT_ERROR;
|
||||
use const PREG_NO_ERROR;
|
||||
use const PREG_RECURSION_LIMIT_ERROR;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \phpDocumentor\Reflection\Exception\PcreException
|
||||
*/
|
||||
final class PcreExceptionTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers ::createFromPhpError
|
||||
* @dataProvider errorCodeProvider
|
||||
*/
|
||||
public function testErrorConversion(int $errorCode, string $message) : void
|
||||
{
|
||||
$this->assertSame($message, PcreException::createFromPhpError($errorCode)->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<int, (string|int)[]>
|
||||
*/
|
||||
public function errorCodeProvider() : array
|
||||
{
|
||||
return [
|
||||
[
|
||||
PREG_BACKTRACK_LIMIT_ERROR,
|
||||
'Backtrack limit error',
|
||||
],
|
||||
[
|
||||
PREG_RECURSION_LIMIT_ERROR,
|
||||
'Recursion limit error',
|
||||
],
|
||||
[
|
||||
PREG_BAD_UTF8_ERROR,
|
||||
'Bad UTF8 error',
|
||||
],
|
||||
[
|
||||
PREG_BAD_UTF8_OFFSET_ERROR,
|
||||
'Bad UTF8 offset error',
|
||||
],
|
||||
[
|
||||
PREG_JIT_STACKLIMIT_ERROR,
|
||||
'Jit stacklimit error',
|
||||
],
|
||||
[
|
||||
PREG_NO_ERROR,
|
||||
'Unknown Pcre error',
|
||||
],
|
||||
[
|
||||
PREG_INTERNAL_ERROR,
|
||||
'Unknown Pcre error',
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace phpDocumentor\Reflection;
|
||||
|
||||
use phpDocumentor\Reflection\Exception\PcreException;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use function set_error_handler;
|
||||
use const E_WARNING;
|
||||
|
||||
final class PregSplitTest extends TestCase
|
||||
{
|
||||
/** @var callable|null */
|
||||
private $errorHandler = null;
|
||||
|
||||
protected function tearDown() : void
|
||||
{
|
||||
if ($this->errorHandler === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
set_error_handler($this->errorHandler, E_WARNING);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \phpDocumentor\Reflection\Utils::pregSplit
|
||||
*/
|
||||
public function testSimplePregSplit() : void
|
||||
{
|
||||
$result = Utils::pregSplit('/\s/', 'word split');
|
||||
|
||||
$this->assertSame(['word', 'split'], $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \phpDocumentor\Reflection\Utils::pregSplit
|
||||
*/
|
||||
public function testPregSplitThrowsOnError() : void
|
||||
{
|
||||
//We need to disable the error handler for phpunit... because we expect some errors here
|
||||
$this->errorHandler = set_error_handler(static function () : void {
|
||||
}, E_WARNING);
|
||||
|
||||
$this->expectException(PcreException::class);
|
||||
Utils::pregSplit('~InvalidRegular)Expression~', 'some word');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user