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 ...@@ -1093,7 +1093,7 @@ abstract class AbstractSchemaManager
*/ */
public function extractDoctrineTypeFromComment($comment, $currentType) public function extractDoctrineTypeFromComment($comment, $currentType)
{ {
if (preg_match("(\(DC2Type:([a-zA-Z0-9_]+)\))", $comment, $match)) { if (preg_match("(\(DC2Type:(((?!\)).)+)\))", $comment, $match)) {
$currentType = $match[1]; $currentType = $match[1];
} }
......
...@@ -1307,4 +1307,30 @@ class SchemaManagerFunctionalTestCase extends \Doctrine\Tests\DbalFunctionalTest ...@@ -1307,4 +1307,30 @@ class SchemaManagerFunctionalTestCase extends \Doctrine\Tests\DbalFunctionalTest
self::assertFalse($tableDiff); 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