1313
1414use Symfony \Bundle \MakerBundle \Maker \MakeController ;
1515use Symfony \Bundle \MakerBundle \Test \MakerTestCase ;
16+ use Symfony \Bundle \MakerBundle \Test \MakerTestDetails ;
1617use Symfony \Bundle \MakerBundle \Test \MakerTestRunner ;
1718
1819class MakeControllerTest extends MakerTestCase
@@ -22,9 +23,23 @@ protected function getMakerClass(): string
2223 return MakeController::class;
2324 }
2425
25- public function getTestDetails ()
26+ // @legacy Remove when Symfony 5.4 is no longer supported
27+ private function getControllerTest (): MakerTestDetails
2628 {
27- yield 'it_generates_a_controller ' => [$ this ->createMakerTest ()
29+ return $ this
30+ ->createMakerTest ()
31+ ->preRun (function (MakerTestRunner $ runner ) {
32+ if ($ runner ->getSymfonyVersion () < 60000 ) {
33+ // Because MakeController::configureDependencies() is executed in the main thread,
34+ // we need to manually add in `doctrine/annotations` for Symfony 5.4 tests.
35+ $ runner ->runProcess ('composer require doctrine/annotations ' );
36+ }
37+ });
38+ }
39+
40+ public function getTestDetails (): \Generator
41+ {
42+ yield 'it_generates_a_controller ' => [$ this ->getControllerTest ()
2843 ->run (function (MakerTestRunner $ runner ) {
2944 $ output = $ runner ->runMaker ([
3045 // controller class name
@@ -37,7 +52,7 @@ public function getTestDetails()
3752 }),
3853 ];
3954
40- yield 'it_generates_a_controller_with_twig ' => [$ this ->createMakerTest ()
55+ yield 'it_generates_a_controller_with_twig ' => [$ this ->getControllerTest ()
4156 ->addExtraDependencies ('twig ' )
4257 ->run (function (MakerTestRunner $ runner ) {
4358 $ output = $ runner ->runMaker ([
@@ -49,7 +64,7 @@ public function getTestDetails()
4964 }),
5065 ];
5166
52- yield 'it_generates_a_controller_with_twig_no_base_template ' => [$ this ->createMakerTest ()
67+ yield 'it_generates_a_controller_with_twig_no_base_template ' => [$ this ->getControllerTest ()
5368 ->addExtraDependencies ('twig ' )
5469 ->run (function (MakerTestRunner $ runner ) {
5570 $ runner ->deleteFile ('templates/base.html.twig ' );
@@ -63,7 +78,7 @@ public function getTestDetails()
6378 }),
6479 ];
6580
66- yield 'it_generates_a_controller_with_without_template ' => [$ this ->createMakerTest ()
81+ yield 'it_generates_a_controller_with_without_template ' => [$ this ->getControllerTest ()
6782 ->addExtraDependencies ('twig ' )
6883 ->run (function (MakerTestRunner $ runner ) {
6984 $ runner ->deleteFile ('templates/base.html.twig ' );
@@ -80,7 +95,7 @@ public function getTestDetails()
8095 }),
8196 ];
8297
83- yield 'it_generates_a_controller_in_sub_namespace ' => [$ this ->createMakerTest ()
98+ yield 'it_generates_a_controller_in_sub_namespace ' => [$ this ->getControllerTest ()
8499 ->run (function (MakerTestRunner $ runner ) {
85100 $ output = $ runner ->runMaker ([
86101 // controller class name
@@ -92,7 +107,7 @@ public function getTestDetails()
92107 }),
93108 ];
94109
95- yield 'it_generates_a_controller_in_sub_namespace_with_template ' => [$ this ->createMakerTest ()
110+ yield 'it_generates_a_controller_in_sub_namespace_with_template ' => [$ this ->getControllerTest ()
96111 ->addExtraDependencies ('twig ' )
97112 ->run (function (MakerTestRunner $ runner ) {
98113 $ output = $ runner ->runMaker ([
@@ -104,7 +119,7 @@ public function getTestDetails()
104119 }),
105120 ];
106121
107- yield 'it_generates_a_controller_with_full_custom_namespace ' => [$ this ->createMakerTest ()
122+ yield 'it_generates_a_controller_with_full_custom_namespace ' => [$ this ->getControllerTest ()
108123 ->addExtraDependencies ('twig ' )
109124 ->run (function (MakerTestRunner $ runner ) {
110125 $ output = $ runner ->runMaker ([
@@ -118,7 +133,7 @@ public function getTestDetails()
118133 ];
119134 }
120135
121- private function runControllerTest (MakerTestRunner $ runner , string $ filename )
136+ private function runControllerTest (MakerTestRunner $ runner , string $ filename ): void
122137 {
123138 $ runner ->copy (
124139 'make-controller/tests/ ' .$ filename ,
0 commit comments