public function testGetter() { $composer = $this->getMock('Composer\\Composer'); $io = $this->getMock('Composer\\IO\\IOInterface'); $policy = $this->getMock('Composer\\DependencyResolver\\PolicyInterface'); $pool = $this->getMockBuilder('Composer\\DependencyResolver\\Pool')->disableOriginalConstructor()->getMock(); $installedRepo = $this->getMockBuilder('Composer\\Repository\\CompositeRepository')->disableOriginalConstructor()->getMock(); $request = $this->getMockBuilder('Composer\\DependencyResolver\\Request')->disableOriginalConstructor()->getMock(); $operations = array($this->getMock('Composer\\DependencyResolver\\Operation\\OperationInterface')); $event = new InstallerEvent('EVENT_NAME', $composer, $io, $policy, $pool, $installedRepo, $request, $operations); $this->assertSame('EVENT_NAME', $event->getName()); $this->assertInstanceOf('Composer\\Composer', $event->getComposer()); $this->assertInstanceOf('Composer\\IO\\IOInterface', $event->getIO()); $this->assertInstanceOf('Composer\\DependencyResolver\\PolicyInterface', $event->getPolicy()); $this->assertInstanceOf('Composer\\DependencyResolver\\Pool', $event->getPool()); $this->assertInstanceOf('Composer\\Repository\\CompositeRepository', $event->getInstalledRepo()); $this->assertInstanceOf('Composer\\DependencyResolver\\Request', $event->getRequest()); $this->assertCount(1, $event->getOperations()); }
public function postDependencySolve(InstallerEvent $event) { if (!$this->enabled) { return; } $extra = $event->getComposer()->getPackage()->getExtra(); $uninstall = array_get($extra, 'xpressengine-plugin.uninstall', []); foreach ($event->getOperations() as $operation) { /** @var UpdateOperation $operation */ if (is_subclass_of($operation, UpdateOperation::class) || is_subclass_of($operation, InstallOperation::class)) { $target = $operation->getInitialPackage(); if (in_array($target->getName(), $uninstall)) { throw new \Exception('xpressengine-installer: To install or update the package requested to delete is not allowed.', 66); } } } }