Unverified Commit c6785e34 authored by Luís Cobucci's avatar Luís Cobucci

Merge branch 'custom-type-comment-regex' into 2.6

Backporting https://github.com/doctrine/dbal/pull/2905
parents fe824157 bc6ea16c
......@@ -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];
}
......
......@@ -1307,4 +1307,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