Skip to content

Commit 45feded

Browse files
committed
fix(discovery): support PSR-4 paths defined as arrays in composer.json
1 parent 6c8b9fe commit 45feded

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

tests/Integration/Core/ComposerTest.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)