88use Composer \Config ;
99use Composer \IO \IOInterface ;
1010use Composer \Package \Package ;
11+ use Composer \Package \RootPackage ;
1112use Composer \Repository \RepositoryManager ;
13+ use Composer \Script \Event ;
1214use Composer \Util \HttpDownloader ;
1315use PHPUnit \Framework \TestCase ;
1416
@@ -67,7 +69,9 @@ public function setUp(): void
6769 $ this ->composer = new Composer ();
6870 $ config = new Config ();
6971 $ config ->merge ([
70- 'vendor-dir ' => $ this ->path . '/vendor ' ,
72+ 'config ' => [
73+ 'vendor-dir ' => $ this ->path . '/vendor ' ,
74+ ],
7175 ]);
7276
7377 $ this ->composer ->setConfig ($ config );
@@ -109,6 +113,7 @@ public function testGetSubscribedEvents()
109113 {
110114 $ expected = [
111115 'post-autoload-dump ' => 'postAutoloadDump ' ,
116+ 'pre-autoload-dump ' => 'preAutoloadDump ' ,
112117 ];
113118
114119 $ this ->assertSame ($ expected , $ this ->plugin ->getSubscribedEvents ());
@@ -120,6 +125,54 @@ public function testGetConfigFilePath()
120125 $ this ->assertFileExists (dirname ($ path ));
121126 }
122127
128+ public function testPreAutoloadDump ()
129+ {
130+ $ package = new RootPackage ('App ' , '1.0.0 ' , '1.0.0 ' );
131+ $ package ->setExtra ([
132+ 'plugin-paths ' => [
133+ 'app_plugins ' ,
134+ 'plugins ' ,
135+ ],
136+ ]);
137+ $ package ->setAutoload ([
138+ 'psr-4 ' => [
139+ 'Foo \\' => 'xyz/Foo/src ' ,
140+ ],
141+ ]);
142+ $ package ->setDevAutoload ([
143+ 'psr-4 ' => [
144+ 'Foo\Test \\' => 'xyz/Foo/tests ' ,
145+ ],
146+ ]);
147+ $ this ->composer ->setPackage ($ package );
148+
149+ $ event = new Event ('' , $ this ->composer , $ this ->io );
150+
151+ $ this ->plugin ->preAutoloadDump ($ event );
152+
153+ $ expected = [
154+ 'psr-4 ' => [
155+ 'Foo \\' => 'xyz/Foo/src ' ,
156+ 'Fee \\' => 'plugins/Fee/src ' ,
157+ 'Fum \\' => 'plugins/Fum/src ' ,
158+ 'Foe \\' => 'plugins/Foe/src ' ,
159+ 'Bar \\' => 'app_plugins/Bar/src ' ,
160+ ],
161+ ];
162+ $ this ->assertEquals ($ expected , $ package ->getAutoload ());
163+
164+ $ expected = [
165+ 'psr-4 ' => [
166+ 'Foo\Test \\' => 'xyz/Foo/tests ' ,
167+ 'Fee\Test \\' => 'plugins/Fee/tests ' ,
168+ 'Fum\Test \\' => 'plugins/Fum/tests ' ,
169+ 'Foe\Test \\' => 'plugins/Foe/tests ' ,
170+ 'Bar\Test \\' => 'app_plugins/Bar/tests ' ,
171+ ],
172+ ];
173+ $ this ->assertEquals ($ expected , $ package ->getDevAutoload ());
174+ }
175+
123176 public function testGetPrimaryNamespace ()
124177 {
125178 $ autoload = [
0 commit comments