Unverified Commit ea968dfd authored by Luís Cobucci's avatar Luís Cobucci Committed by GitHub

Merge pull request #2905 from jeremy-smith-maco/custom-type-comment-regex

Fixes custom type comment regex

Fixes: https://github.com/doctrine/dbal/issues/2596
Replaces: https://github.com/doctrine/dbal/pull/2679
parents 51bf0ae6 22844d3c
......@@ -1093,7 +1093,7 @@ abstract class AbstractSchemaManager
*/
public function extractDoctrineTypeFromComment($comment, $currentType)
{
if (preg_match("(\(DC2Type:([a-zA-Z0-9_]+)\))", $comment, $match)) {
if (preg_match("(\(DC2Type:(((?!\)).)+)\))", $comment, $match)) {
$currentType = $match[1];
}
......
......@@ -1334,4 +1334,30 @@ class SchemaManagerFunctionalTestCase extends \Doctrine\Tests\DbalFunctionalTest
self::assertFalse($tableDiff);
}
/**
* @dataProvider commentsProvider
*
* @group 2596
*/
public function testExtractDoctrineTypeFromComment(string $comment, string $expected, string $currentType) : void
{
$result = $this->_sm->extractDoctrineTypeFromComment($comment, $currentType);
self::assertSame($expected, $result);
}
public function commentsProvider() : array
{
$currentType = 'current type';
return [
'invalid custom type comments' => ['should.return.current.type', $currentType, $currentType],
'valid doctrine type' => ['(DC2Type:guid)', 'guid', $currentType],
'valid with dots' => ['(DC2Type:type.should.return)', 'type.should.return', $currentType],
'valid with namespace' => ['(DC2Type:Namespace\Class)', 'Namespace\Class', $currentType],
'valid with extra closing bracket' => ['(DC2Type:should.stop)).before)', 'should.stop', $currentType],
'valid with extra opening brackets' => ['(DC2Type:should((.stop)).before)', 'should((.stop', $currentType],
];
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment