12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094 |
- <?php
- declare(strict_types=1);
- /*
- * This file is part of PHP CS Fixer.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- * Dariusz Rumiński <dariusz.ruminski@gmail.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
- namespace PhpCsFixer\Tests\Fixer\Phpdoc;
- use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException;
- use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
- /**
- * @author Graham Campbell <hello@gjcampbell.co.uk>
- * @author Jakub Kwaśniewski <jakub@zero-85.pl>
- *
- * @internal
- *
- * @covers \PhpCsFixer\Fixer\Phpdoc\PhpdocSeparationFixer
- */
- final class PhpdocSeparationFixerTest extends AbstractFixerTestCase
- {
- public function testFix(): void
- {
- $this->doTest('<?php
- /** @param EngineInterface $templating
- *@return void
- */');
- $expected = <<<'EOF'
- <?php
- /**
- * @param EngineInterface $templating
- *
- * @return void
- */
- EOF;
- $input = <<<'EOF'
- <?php
- /**
- * @param EngineInterface $templating
- * @return void
- */
- EOF;
- $this->doTest($expected, $input);
- }
- public function testFixMoreTags(): void
- {
- $expected = <<<'EOF'
- <?php
- /**
- * Hello there!
- *
- * @internal
- *
- * @param string $foo
- *
- * @throws Exception
- *
- * @return bool
- */
- EOF;
- $input = <<<'EOF'
- <?php
- /**
- * Hello there!
- * @internal
- * @param string $foo
- * @throws Exception
- *
- *
- *
- * @return bool
- */
- EOF;
- $this->doTest($expected, $input);
- }
- public function testFixSpreadOut(): void
- {
- $expected = <<<'EOF'
- <?php
- /**
- * Hello there!
- *
- * Long description
- * goes here.
- *
- * @param string $foo
- * @param bool $bar Bar
- *
- * @throws Exception|RuntimeException
- *
- * @return bool
- */
- EOF;
- $input = <<<'EOF'
- <?php
- /**
- * Hello there!
- *
- * Long description
- * goes here.
- * @param string $foo
- *
- *
- * @param bool $bar Bar
- *
- *
- *
- * @throws Exception|RuntimeException
- *
- *
- *
- *
- * @return bool
- */
- EOF;
- $this->doTest($expected, $input);
- }
- public function testMultiLineComments(): void
- {
- $expected = <<<'EOF'
- <?php
- /**
- * Hello there!
- *
- * Long description
- * goes here.
- *
- * @param string $foo test 123
- * asdasdasd
- * @param bool $bar qwerty
- *
- * @throws Exception|RuntimeException
- *
- * @return bool
- */
- EOF;
- $input = <<<'EOF'
- <?php
- /**
- * Hello there!
- *
- * Long description
- * goes here.
- * @param string $foo test 123
- * asdasdasd
- * @param bool $bar qwerty
- * @throws Exception|RuntimeException
- * @return bool
- */
- EOF;
- $this->doTest($expected, $input);
- }
- public function testCrazyMultiLineComments(): void
- {
- $expected = <<<'EOF'
- <?php
- /**
- * Clients accept an array of constructor parameters.
- *
- * Here's an example of creating a client using a URI template for the
- * client's base_url and an array of default request options to apply
- * to each request:
- *
- * $client = new Client([
- * 'base_url' => [
- * 'https://www.foo.com/{version}/',
- * ['version' => '123']
- * ],
- * 'defaults' => [
- * 'timeout' => 10,
- * 'allow_redirects' => false,
- * 'proxy' => '192.168.16.1:10'
- * ]
- * ]);
- *
- * @param array $config Client configuration settings
- * - base_url: Base URL of the client that is merged into relative URLs.
- * Can be a string or an array that contains a URI template followed
- * by an associative array of expansion variables to inject into the
- * URI template.
- * - handler: callable RingPHP handler used to transfer requests
- * - message_factory: Factory used to create request and response object
- * - defaults: Default request options to apply to each request
- * - emitter: Event emitter used for request events
- * - fsm: (internal use only) The request finite state machine. A
- * function that accepts a transaction and optional final state. The
- * function is responsible for transitioning a request through its
- * lifecycle events.
- * @param string $foo
- */
- EOF;
- $this->doTest($expected);
- }
- public function testDoctrineExample(): void
- {
- $expected = <<<'EOF'
- <?php
- /**
- * PersistentObject base class that implements getter/setter methods for all mapped fields and associations
- * by overriding __call.
- *
- * This class is a forward compatible implementation of the PersistentObject trait.
- *
- * Limitations:
- *
- * 1. All persistent objects have to be associated with a single ObjectManager, multiple
- * ObjectManagers are not supported. You can set the ObjectManager with `PersistentObject#setObjectManager()`.
- * 2. Setters and getters only work if a ClassMetadata instance was injected into the PersistentObject.
- * This is either done on `postLoad` of an object or by accessing the global object manager.
- * 3. There are no hooks for setters/getters. Just implement the method yourself instead of relying on __call().
- * 4. Slower than handcoded implementations: An average of 7 method calls per access to a field and 11 for an association.
- * 5. Only the inverse side associations get autoset on the owning side as well. Setting objects on the owning side
- * will not set the inverse side associations.
- *
- * @example
- *
- * PersistentObject::setObjectManager($em);
- *
- * class Foo extends PersistentObject
- * {
- * private $id;
- * }
- *
- * $foo = new Foo();
- * $foo->getId(); // method exists through __call
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
- EOF;
- $this->doTest($expected);
- }
- public function testSymfonyExample(): void
- {
- $expected = <<<'EOF'
- <?php
- /**
- * Constructor.
- *
- * Depending on how you want the storage driver to behave you probably
- * want to override this constructor entirely.
- *
- * List of options for $options array with their defaults.
- *
- * @see https://php.net/session.configuration for options
- *
- * but we omit 'session.' from the beginning of the keys for convenience.
- *
- * ("auto_start", is not supported as it tells PHP to start a session before
- * PHP starts to execute user-land code. Setting during runtime has no effect).
- *
- * cache_limiter, "nocache" (use "0" to prevent headers from being sent entirely).
- * cookie_domain, ""
- * cookie_httponly, ""
- * cookie_lifetime, "0"
- * cookie_path, "/"
- * cookie_secure, ""
- * entropy_file, ""
- * entropy_length, "0"
- * gc_divisor, "100"
- * gc_maxlifetime, "1440"
- * gc_probability, "1"
- * hash_bits_per_character, "4"
- * hash_function, "0"
- * name, "PHPSESSID"
- * referer_check, ""
- * serialize_handler, "php"
- * use_cookies, "1"
- * use_only_cookies, "1"
- * use_trans_sid, "0"
- * upload_progress.enabled, "1"
- * upload_progress.cleanup, "1"
- * upload_progress.prefix, "upload_progress_"
- * upload_progress.name, "PHP_SESSION_UPLOAD_PROGRESS"
- * upload_progress.freq, "1%"
- * upload_progress.min-freq, "1"
- * url_rewriter.tags, "a=href,area=href,frame=src,form=,fieldset="
- *
- * @param array $options Session configuration options.
- * @param AbstractProxy|NativeSessionHandler|\SessionHandlerInterface|null $handler
- * @param MetadataBag $metaBag MetadataBag.
- */
- EOF;
- $this->doTest($expected);
- }
- public function testDeprecatedAndSeeTags(): void
- {
- $expected = <<<'EOF'
- <?php
- /**
- * Hi!
- *
- * @author Bar Baz <foo@example.com>
- *
- * @deprecated As of some version.
- * @see Replacement
- * described here.
- *
- * @param string $foo test 123
- * @param bool $bar qwerty
- *
- * @return void
- */
- EOF;
- $input = <<<'EOF'
- <?php
- /**
- * Hi!
- *
- * @author Bar Baz <foo@example.com>
- * @deprecated As of some version.
- *
- * @see Replacement
- * described here.
- * @param string $foo test 123
- * @param bool $bar qwerty
- *
- * @return void
- */
- EOF;
- $this->doTest($expected, $input);
- }
- public function testPropertyTags(): void
- {
- $expected = <<<'EOF'
- <?php
- /**
- * @author Bar Baz <foo@example.com>
- *
- * @property int $foo
- * @property-read int $foo
- * @property-write int $bar
- */
- EOF;
- $input = <<<'EOF'
- <?php
- /**
- * @author Bar Baz <foo@example.com>
- * @property int $foo
- *
- * @property-read int $foo
- *
- * @property-write int $bar
- */
- EOF;
- $this->doTest($expected, $input);
- }
- public function testClassDocBlock(): void
- {
- $expected = <<<'EOF'
- <?php
- namespace Foo;
- /**
- * This is a class that does classy things.
- *
- * @internal
- *
- * @package Foo
- * @subpackage Foo\Bar
- *
- * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
- * @author Graham Campbell <hello@gjcampbell.co.uk>
- * @copyright Foo Bar
- * @license MIT
- */
- class Bar {}
- EOF;
- $input = <<<'EOF'
- <?php
- namespace Foo;
- /**
- * This is a class that does classy things.
- * @internal
- * @package Foo
- *
- *
- * @subpackage Foo\Bar
- * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
- *
- * @author Graham Campbell <hello@gjcampbell.co.uk>
- *
- * @copyright Foo Bar
- *
- *
- * @license MIT
- */
- class Bar {}
- EOF;
- $this->doTest($expected, $input);
- }
- public function testPoorAlignment(): void
- {
- $expected = <<<'EOF'
- <?php
- namespace Foo;
- /**
- * This is a class that does classy things.
- *
- * @internal
- *
- * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
- *@author Graham Campbell <hello@gjcampbell.co.uk>
- */
- class Bar {}
- EOF;
- $input = <<<'EOF'
- <?php
- namespace Foo;
- /**
- * This is a class that does classy things.
- *
- * @internal
- *
- *
- *
- * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
- *
- *
- *@author Graham Campbell <hello@gjcampbell.co.uk>
- */
- class Bar {}
- EOF;
- $this->doTest($expected, $input);
- }
- public function testMoveUnknownAnnotations(): void
- {
- $expected = <<<'EOF'
- <?php
- /**
- * @expectedException Exception
- *
- * @expectedExceptionMessage Oh Noes!
- * Something when wrong!
- *
- * @Hello\Test\Foo(asd)
- *
- * @Method("GET")
- *
- * @param string $expected
- * @param string $input
- */
- EOF;
- $input = <<<'EOF'
- <?php
- /**
- * @expectedException Exception
- * @expectedExceptionMessage Oh Noes!
- * Something when wrong!
- *
- *
- * @Hello\Test\Foo(asd)
- * @Method("GET")
- *
- * @param string $expected
- *
- * @param string $input
- */
- EOF;
- $this->doTest($expected, $input);
- }
- /**
- * @dataProvider provideInheritDocCases
- */
- public function testInheritDoc(string $expected, string $input): void
- {
- $this->doTest($expected, $input);
- }
- public static function provideInheritDocCases(): array
- {
- return [
- [
- '<?php
- /**
- * {@inheritdoc}
- *
- * @param string $expected
- * @param string $input
- */
- ',
- '<?php
- /**
- * {@inheritdoc}
- * @param string $expected
- * @param string $input
- */
- ',
- ],
- [
- '<?php
- /**
- * {@inheritDoc}
- *
- * @param string $expected
- * @param string $input
- */
- ',
- '<?php
- /**
- * {@inheritDoc}
- * @param string $expected
- * @param string $input
- */
- ',
- ],
- ];
- }
- public function testEmptyDocBlock(): void
- {
- $expected = <<<'EOF'
- <?php
- /**
- *
- */
- EOF;
- $this->doTest($expected);
- }
- public function testLargerEmptyDocBlock(): void
- {
- $expected = <<<'EOF'
- <?php
- /**
- *
- *
- *
- *
- */
- EOF;
- $this->doTest($expected);
- }
- public function testOneLineDocBlock(): void
- {
- $expected = <<<'EOF'
- <?php
- /** Foo */
- const Foo = 1;
- EOF;
- $this->doTest($expected);
- }
- public function testMessyWhitespaces(): void
- {
- $expected = "<?php\t/**\r\n\t * @param string \$text\r\n\t *\r\n\t * @return string\r\n\t */";
- $input = "<?php\t/**\r\n\t * @param string \$text\r\n\t * @return string\r\n\t */";
- $this->doTest($expected, $input);
- }
- public function testWithSpacing(): void
- {
- $expected = '<?php
- /**
- * Foo
- *
- * @bar 123
- *
- * {@inheritdoc} '.'
- *
- * @param string $expected
- * @param string $input
- */';
- $input = '<?php
- /**
- * Foo
- * @bar 123
- *
- * {@inheritdoc} '.'
- * @param string $expected
- * @param string $input
- */';
- $this->doTest($expected, $input);
- }
- public function testTagInTwoGroupsConfiguration(): void
- {
- $this->expectException(InvalidFixerConfigurationException::class);
- $this->expectExceptionMessage(
- 'The option "groups" value is invalid. '.
- 'The "param" tag belongs to more than one group.'
- );
- $this->fixer->configure(['groups' => [['param', 'return'], ['param', 'throws']]]);
- }
- public function testTagSpecifiedTwoTimesInGroupConfiguration(): void
- {
- $this->expectException(InvalidFixerConfigurationException::class);
- $this->expectExceptionMessage(
- 'The option "groups" value is invalid. '.
- 'The "param" tag is specified more than once.'
- );
- $this->fixer->configure(['groups' => [['param', 'return', 'param', 'throws']]]);
- }
- public function testLaravelGroups(): void
- {
- $this->fixer->configure(['groups' => [
- ['param', 'return'],
- ['throws'],
- ['deprecated', 'link', 'see', 'since'],
- ['author', 'copyright', 'license'],
- ['category', 'package', 'subpackage'],
- ['property', 'property-read', 'property-write'],
- ]]);
- $expected = <<<'EOF'
- <?php
- /**
- * Attempt to authenticate using HTTP Basic Auth.
- *
- * @param string $field
- * @param array $extraConditions
- * @return \Symfony\Component\HttpFoundation\Response|null
- *
- * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
- */
- EOF;
- $input = <<<'EOF'
- <?php
- /**
- * Attempt to authenticate using HTTP Basic Auth.
- *
- * @param string $field
- * @param array $extraConditions
- * @return \Symfony\Component\HttpFoundation\Response|null
- * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
- */
- EOF;
- $this->doTest($expected, $input);
- }
- public function testVariousGroups(): void
- {
- $this->fixer->configure([
- 'groups' => [
- ['deprecated', 'link', 'see', 'since', 'author', 'copyright', 'license'],
- ['category', 'package', 'subpackage'],
- ['property', 'property-read', 'property-write'],
- ['return', 'param'],
- ],
- ]);
- $expected = <<<'EOF'
- <?php
- /**
- * Attempt to authenticate using HTTP Basic Auth.
- *
- * @link https://example.com/link
- * @see https://doc.example.com/link
- * @copyright by John Doe 2001
- * @author John Doe
- *
- * @property-custom string $prop
- *
- * @param string $field
- * @param array $extraConditions
- * @return \Symfony\Component\HttpFoundation\Response|null
- *
- * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
- */
- EOF;
- $input = <<<'EOF'
- <?php
- /**
- * Attempt to authenticate using HTTP Basic Auth.
- *
- * @link https://example.com/link
- *
- *
- * @see https://doc.example.com/link
- * @copyright by John Doe 2001
- * @author John Doe
- * @property-custom string $prop
- * @param string $field
- * @param array $extraConditions
- *
- * @return \Symfony\Component\HttpFoundation\Response|null
- * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
- */
- EOF;
- $this->doTest($expected, $input);
- }
- public function testVariousAdditionalGroups(): void
- {
- $this->fixer->configure([
- 'groups' => [
- ['deprecated', 'link', 'see', 'since', 'author', 'copyright', 'license'],
- ['category', 'package', 'subpackage'],
- ['property', 'property-read', 'property-write'],
- ['return', 'param'],
- ],
- ]);
- $expected = <<<'EOF'
- <?php
- /**
- * Attempt to authenticate using HTTP Basic Auth.
- *
- * @link https://example.com/link
- * @see https://doc.example.com/link
- * @copyright by John Doe 2001
- * @author John Doe
- *
- * @param string $field
- * @param array $extraConditions
- * @return \Symfony\Component\HttpFoundation\Response|null
- *
- * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
- */
- EOF;
- $input = <<<'EOF'
- <?php
- /**
- * Attempt to authenticate using HTTP Basic Auth.
- *
- * @link https://example.com/link
- *
- *
- * @see https://doc.example.com/link
- * @copyright by John Doe 2001
- * @author John Doe
- * @param string $field
- * @param array $extraConditions
- *
- * @return \Symfony\Component\HttpFoundation\Response|null
- * @throws \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
- */
- EOF;
- $this->doTest($expected, $input);
- }
- /**
- * @dataProvider provideDocCodeCases
- *
- * @param array<string, mixed> $config
- */
- public function testDocCode(string $expected, ?string $input = null, ?array $config = null): void
- {
- if (null !== $config) {
- $this->fixer->configure($config);
- }
- $this->doTest($expected, $input);
- }
- /**
- * @return array<array<null|array<string, mixed>|string>>
- */
- public static function provideDocCodeCases(): iterable
- {
- $input = <<<'EOF'
- <?php
- /**
- * Hello there!
- *
- * @author John Doe
- * @custom Test!
- * @throws Exception|RuntimeException foo
- * @param string $foo
- * @param bool $bar Bar
- *
- * @return int Return the number of changes.
- */
- EOF;
- yield 'laravel' => [
- <<<'EOF'
- <?php
- /**
- * Hello there!
- *
- * @author John Doe
- *
- * @custom Test!
- *
- * @throws Exception|RuntimeException foo
- *
- * @param string $foo
- * @param bool $bar Bar
- * @return int Return the number of changes.
- */
- EOF,
- $input,
- ['groups' => [
- ['param', 'return'],
- ['throws'],
- ['deprecated', 'link', 'see', 'since'],
- ['author', 'copyright', 'license'],
- ['category', 'package', 'subpackage'],
- ['property', 'property-read', 'property-write'],
- ]],
- ];
- yield 'all_tags' => [
- <<<'EOF'
- <?php
- /**
- * Hello there!
- *
- * @author John Doe
- * @custom Test!
- * @throws Exception|RuntimeException foo
- *
- * @param string $foo
- * @param bool $bar Bar
- * @return int Return the number of changes.
- */
- EOF,
- $input,
- ['groups' => [['author', 'throws', 'custom'], ['return', 'param']]],
- ];
- yield 'default_groups_standard_tags' => [
- <<<'EOF'
- <?php
- /**
- * Hello there!
- *
- * @author John Doe
- *
- * @throws Exception|RuntimeException foo
- *
- * @custom Test!
- *
- * @param string $foo
- * @param bool $bar Bar
- *
- * @return int Return the number of changes.
- */
- EOF,
- <<<'EOF'
- <?php
- /**
- * Hello there!
- * @author John Doe
- * @throws Exception|RuntimeException foo
- * @custom Test!
- * @param string $foo
- * @param bool $bar Bar
- * @return int Return the number of changes.
- */
- EOF,
- ];
- yield 'default_groups_all_tags' => [
- <<<'EOF'
- <?php
- /**
- * Hello there!
- *
- * @author John Doe
- *
- * @throws Exception|RuntimeException foo
- *
- * @custom Test!
- *
- * @param string $foo
- * @param bool $bar Bar
- *
- * @return int Return the number of changes.
- */
- EOF,
- <<<'EOF'
- <?php
- /**
- * Hello there!
- * @author John Doe
- * @throws Exception|RuntimeException foo
- * @custom Test!
- * @param string $foo
- * @param bool $bar Bar
- * @return int Return the number of changes.
- */
- EOF,
- ];
- yield 'Separated unlisted tags with default config' => [
- <<<'EOF'
- <?php
- /**
- * @not-in-any-group1
- *
- * @not-in-any-group2
- *
- * @not-in-any-group3
- */
- EOF,
- <<<'EOF'
- <?php
- /**
- * @not-in-any-group1
- * @not-in-any-group2
- * @not-in-any-group3
- */
- EOF,
- ];
- yield 'Skip unlisted tags' => [
- <<<'EOF'
- <?php
- /**
- * @in-group-1
- * @in-group-1-too
- *
- * @not-in-any-group1
- *
- * @not-in-any-group2
- * @not-in-any-group3
- */
- EOF,
- <<<'EOF'
- <?php
- /**
- * @in-group-1
- *
- * @in-group-1-too
- * @not-in-any-group1
- *
- * @not-in-any-group2
- * @not-in-any-group3
- */
- EOF,
- [
- 'groups' => [['in-group-1', 'in-group-1-too']],
- 'skip_unlisted_annotations' => true,
- ],
- ];
- yield 'Doctrine annotations' => [
- <<<'EOF'
- <?php
- /**
- * @ORM\Id
- * @ORM\Column(type="integer")
- * @ORM\GeneratedValue
- */
- EOF,
- <<<'EOF'
- <?php
- /**
- * @ORM\Id
- *
- * @ORM\Column(type="integer")
- *
- * @ORM\GeneratedValue
- */
- EOF,
- ['groups' => [
- ['ORM\Id', 'ORM\Column', 'ORM\GeneratedValue'],
- ]],
- ];
- yield 'With wildcard' => [
- <<<'EOF'
- <?php
- /**
- * @ORM\Id
- * @ORM\Column(type="integer")
- * @ORM\GeneratedValue
- *
- * @Assert\NotNull
- * @Assert\Type("string")
- */
- EOF,
- <<<'EOF'
- <?php
- /**
- * @ORM\Id
- *
- * @ORM\Column(type="integer")
- *
- * @ORM\GeneratedValue
- * @Assert\NotNull
- *
- * @Assert\Type("string")
- */
- EOF,
- ['groups' => [
- ['ORM\*'],
- ['Assert\*'],
- ]],
- ];
- }
- }
|