Upstream webmozarts/assert state of the touched files before 381c97d823
This commit is contained in:
1 parent
24cce423ab
commit
74642583b5
2 files changed
+1
-70
No files matched your search
+1
-9
@@ -1507,15 +1507,7 @@ class Assert
|
|||||||
static::string($value);
|
static::string($value);
|
||||||
static::string($pattern);
|
static::string($pattern);
|
||||||
|
|
||||||
if (false === $result = @\preg_match($pattern, $value)) {
|
if (!\preg_match($pattern, $value)) {
|
||||||
static::reportInvalidArgument(\sprintf(
|
|
||||||
'The pattern %s could not be evaluated: %s.',
|
|
||||||
static::valueToString($pattern),
|
|
||||||
\preg_last_error_msg()
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (0 === $result) {
|
|
||||||
$message = self::resolveMessage($message);
|
$message = self::resolveMessage($message);
|
||||||
static::reportInvalidArgument(\sprintf(
|
static::reportInvalidArgument(\sprintf(
|
||||||
$message ?: 'The value %s does not match the expected pattern.',
|
$message ?: 'The value %s does not match the expected pattern.',
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ use DateTime;
|
|||||||
use DateTimeImmutable;
|
use DateTimeImmutable;
|
||||||
use Error;
|
use Error;
|
||||||
use Exception;
|
use Exception;
|
||||||
use InvalidArgumentException;
|
|
||||||
use LogicException;
|
use LogicException;
|
||||||
use PHPUnit\Framework\Attributes\DataProvider;
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
@@ -992,66 +991,6 @@ class AssertTest extends TestCase
|
|||||||
Assert::null(DummyEnum::CaseName, 'Expected null. Got: %s');
|
Assert::null(DummyEnum::CaseName, 'Expected null. Got: %s');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRegexRejectsAnUncompilablePattern(): void
|
|
||||||
{
|
|
||||||
$this->expectException('\InvalidArgumentException');
|
|
||||||
$this->expectExceptionMessage('The pattern "/(/" could not be evaluated: Internal error.');
|
|
||||||
|
|
||||||
Assert::regex('abc', '/(/');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testRegexSuppressesTheWarningForAnUncompilablePattern(): void
|
|
||||||
{
|
|
||||||
$reported = [];
|
|
||||||
// PHPUnit masks E_WARNING out of error_reporting(); restore it here.
|
|
||||||
$errorReporting = error_reporting(E_ALL);
|
|
||||||
set_error_handler(static function (int $errno, string $message) use (&$reported): bool {
|
|
||||||
// This is what a well behaved error handler does with a suppressed diagnostic.
|
|
||||||
if (0 !== (error_reporting() & $errno)) {
|
|
||||||
$reported[] = $message;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
|
||||||
Assert::regex('abc', '/(/');
|
|
||||||
} catch (InvalidArgumentException) {
|
|
||||||
// The assertion is expected to fail; this test only inspects the reported errors.
|
|
||||||
} finally {
|
|
||||||
restore_error_handler();
|
|
||||||
error_reporting($errorReporting);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->assertSame([], $reported);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testRegexDoesNotUseTheCustomMessageForAnUncompilablePattern(): void
|
|
||||||
{
|
|
||||||
$this->expectException('\InvalidArgumentException');
|
|
||||||
$this->expectExceptionMessage('The pattern "/(/" could not be evaluated: Internal error.');
|
|
||||||
|
|
||||||
Assert::regex('abc', '/(/', 'The value %s is not a valid slug.');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testRegexRejectsAPatternExceedingTheBacktrackLimit(): void
|
|
||||||
{
|
|
||||||
$backtrackLimit = ini_get('pcre.backtrack_limit');
|
|
||||||
ini_set('pcre.backtrack_limit', '100');
|
|
||||||
|
|
||||||
try {
|
|
||||||
Assert::regex(str_repeat('a', 30).'c', '/^(a+)+$/');
|
|
||||||
$this->fail('Expected an InvalidArgumentException to be thrown.');
|
|
||||||
} catch (InvalidArgumentException $e) {
|
|
||||||
$this->assertSame(
|
|
||||||
'The pattern "/^(a+)+$/" could not be evaluated: Backtrack limit exhausted.',
|
|
||||||
$e->getMessage()
|
|
||||||
);
|
|
||||||
} finally {
|
|
||||||
ini_set('pcre.backtrack_limit', $backtrackLimit);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[DataProvider('getMethodsThatUseOtherMethods')]
|
#[DataProvider('getMethodsThatUseOtherMethods')]
|
||||||
public function testMessageIsPassedToInternalCalls(string $method, array $args, string $exceptionMessage): void
|
public function testMessageIsPassedToInternalCalls(string $method, array $args, string $exceptionMessage): void
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in new issue
Block a user