/** */ public function setUp() { vfsStream::setup('Test'); self::$testClassWasLoaded = FALSE; $this->classLoader = new ClassLoader(); $this->mockPackage1 = $this->getMockBuilder('TYPO3\\Flow\\Package\\Package')->disableOriginalConstructor()->getMock(); $this->mockPackage1->expects($this->any())->method('getNamespace')->will($this->returnValue('Acme\\MyApp')); $this->mockPackage1->expects($this->any())->method('getClassesPath')->will($this->returnValue('vfs://Test/Packages/Application/Acme.MyApp/Classes/')); $this->mockPackage1->expects($this->any())->method('getPackagePath')->will($this->returnValue('vfs://Test/Packages/Application/Acme.MyApp/')); $this->mockPackage2 = $this->getMockBuilder('TYPO3\\Flow\\Package\\Package')->disableOriginalConstructor()->getMock(); $this->mockPackage2->expects($this->any())->method('getNamespace')->will($this->returnValue('Acme\\MyAppAddon')); $this->mockPackage2->expects($this->any())->method('getClassesPath')->will($this->returnValue('vfs://Test/Packages/Application/Acme.MyAppAddon/Classes/')); $this->mockPackage2->expects($this->any())->method('getPackagePath')->will($this->returnValue('vfs://Test/Packages/Application/Acme.MyAppAddon/')); $this->mockPackages = array('Acme.MyApp' => $this->mockPackage1, 'Acme.MyAppAddon' => $this->mockPackage2); $this->classLoader->setPackages($this->mockPackages, $this->mockPackages); }
/** * @test */ public function classesFromOverlayedPsr4PackagesAreLoaded() { $this->classLoader = new ClassLoader(); $mockPackage1 = $this->getMockBuilder(\TYPO3\Flow\Package\Package::class)->disableOriginalConstructor()->getMock(); $mockPackage1->expects($this->any())->method('getAutoloadType')->will($this->returnValue(Package::AUTOLOADER_TYPE_PSR4)); $mockPackage1->expects($this->any())->method('getNamespace')->will($this->returnValue('TestPackage\\Subscriber\\Log')); $mockPackage1->expects($this->any())->method('getClassesPath')->will($this->returnValue('vfs://Test/Packages/Libraries/test/subPackage/src/')); $mockPackage1->expects($this->any())->method('getPackagePath')->will($this->returnValue('vfs://Test/Packages/Libraries/test/subPackage/src/')); $mockPackage2 = $this->getMockBuilder(\TYPO3\Flow\Package\Package::class)->disableOriginalConstructor()->getMock(); $mockPackage2->expects($this->any())->method('getAutoloadType')->will($this->returnValue(Package::AUTOLOADER_TYPE_PSR4)); $mockPackage2->expects($this->any())->method('getNamespace')->will($this->returnValue('TestPackage')); $mockPackage2->expects($this->any())->method('getClassesPath')->will($this->returnValue('vfs://Test/Packages/Libraries/test/mainPackage/src/')); $mockPackage2->expects($this->any())->method('getPackagePath')->will($this->returnValue('vfs://Test/Packages/Libraries/test/mainPackage/src/')); $packages = array($mockPackage2, $mockPackage1); mkdir('vfs://Test/Packages/Libraries/test/subPackage/src/', 0770, true); mkdir('vfs://Test/Packages/Libraries/test/mainPackage/src/Subscriber', 0770, true); file_put_contents('vfs://Test/Packages/Libraries/test/subPackage/src/Bar.php', '<?php ' . __CLASS__ . '::$testClassWasLoaded = TRUE; ?>'); file_put_contents('vfs://Test/Packages/Libraries/test/mainPackage/src/Subscriber/Foo.php', '<?php ' . __CLASS__ . '::$testClassWasLoaded = TRUE; ?>'); $this->classLoader->setPackages($packages, $packages); $this->classLoader->loadClass('TestPackage\\Subscriber\\Foo'); $this->assertTrue(self::$testClassWasLoaded); self::$testClassWasLoaded = false; $this->classLoader->loadClass('TestPackage\\Subscriber\\Log\\Bar'); $this->assertTrue(self::$testClassWasLoaded); }