@@ -164,4 +164,40 @@ public function dev_namespaces(): void
164164 $ this ->assertSame ('Foo \\' , $ composer ->devNamespaces [0 ]->namespace );
165165 $ this ->assertSame ('foo/ ' , $ composer ->devNamespaces [0 ]->path );
166166 }
167+
168+ #[Test]
169+ public function supports_psr4_paths_as_array (): void
170+ {
171+ $ composer = $ this ->initializeComposer ([
172+ 'autoload ' => [
173+ 'psr-4 ' => [
174+ 'App \\' => 'src/ ' ,
175+ 'Other \\' => ['other/src/ ' , 'other/lib/ ' ],
176+ ],
177+ ],
178+ 'autoload-dev ' => [
179+ 'psr-4 ' => [
180+ 'Tests \\' => ['tests/ ' , 'spec/ ' ],
181+ ],
182+ ],
183+ ]);
184+
185+ $ this ->assertSame ('App \\' , $ composer ->mainNamespace ->namespace );
186+ $ this ->assertSame ('src/ ' , $ composer ->mainNamespace ->path );
187+
188+ $ this ->assertCount (3 , $ composer ->namespaces );
189+ $ this ->assertSame ('App \\' , $ composer ->namespaces [0 ]->namespace );
190+ $ this ->assertSame ('src/ ' , $ composer ->namespaces [0 ]->path );
191+ $ this ->assertSame ('Other \\' , $ composer ->namespaces [1 ]->namespace );
192+ $ this ->assertSame ('other/src/ ' , $ composer ->namespaces [1 ]->path );
193+ $ this ->assertSame ('Other \\' , $ composer ->namespaces [2 ]->namespace );
194+ $ this ->assertSame ('other/lib/ ' , $ composer ->namespaces [2 ]->path );
195+
196+ $ this ->assertCount (2 , $ composer ->devNamespaces );
197+ // sorting is based on path length, putting spec/ before tests/
198+ $ this ->assertSame ('Tests \\' , $ composer ->devNamespaces [0 ]->namespace );
199+ $ this ->assertSame ('spec/ ' , $ composer ->devNamespaces [0 ]->path );
200+ $ this ->assertSame ('Tests \\' , $ composer ->devNamespaces [1 ]->namespace );
201+ $ this ->assertSame ('tests/ ' , $ composer ->devNamespaces [1 ]->path );
202+ }
167203}
0 commit comments