public function classesFromOverlayedPsr4PackagesAreOverwritten()
{
$this->classLoader = new ClassLoader();
$mockPackage1 = $this->getMockBuilder(Package::class)->disableOriginalConstructor()->getMock();
$mockPackage1->expects($this->any())->method('getNamespaces')->will($this->returnValue(['TestPackage\\Foo']));
$mockPackage1->expects($this->any())->method('getFlattenedAutoloadConfiguration')->will($this->returnValue([['namespace' => 'TestPackage\\Foo', 'classPath' => 'vfs://Test/Packages/Libraries/test/subPackage/src/', 'mappingType' => ClassLoader::MAPPING_TYPE_PSR4]]));
$mockPackage2 = $this->getMockBuilder(Package::class)->disableOriginalConstructor()->getMock();
$mockPackage2->expects($this->any())->method('getNamespaces')->will($this->returnValue(['TestPackage']));
$mockPackage2->expects($this->any())->method('getFlattenedAutoloadConfiguration')->will($this->returnValue([['namespace' => 'TestPackage', 'classPath' => 'vfs://Test/Packages/Libraries/test/mainPackage/src/', 'mappingType' => ClassLoader::MAPPING_TYPE_PSR4]]));
$packages = [$mockPackage2, $mockPackage1];
mkdir('vfs://Test/Packages/Libraries/test/subPackage/src/', 0770, true);
mkdir('vfs://Test/Packages/Libraries/test/mainPackage/src/Foo', 0770, true);
file_put_contents('vfs://Test/Packages/Libraries/test/subPackage/src/Bar3.php', '<?php ' . __CLASS__ . '::$testClassWasOverwritten = TRUE; ?>');
file_put_contents('vfs://Test/Packages/Libraries/test/mainPackage/src/Foo/Bar3.php', '<?php ' . __CLASS__ . '::$testClassWasOverwritten = FALSE; ?>');
$this->classLoader->setPackages($packages);
$this->classLoader->loadClass('TestPackage\\Foo\\Bar3');
$this->assertTrue(self::$testClassWasOverwritten);
}