Ejemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function execute()
 {
     if ($this->installInfo->hasEnabledBindingUuid($this->uuid)) {
         $this->wasEnabled = true;
     }
     $this->installInfo->addDisabledBindingUuid($this->uuid);
 }
Ejemplo n.º 2
0
 /**
  * {@inheritdoc}
  */
 public function execute()
 {
     if (!$this->installInfo->hasDisabledBindingUuid($this->uuid)) {
         $this->wasDisabled = false;
         $this->installInfo->addDisabledBindingUuid($this->uuid);
     }
 }
Ejemplo n.º 3
0
 /**
  * {@inheritdoc}
  */
 public function rollback()
 {
     if ($this->wasDisabled) {
         $this->installInfo->addDisabledBindingUuid($this->uuid);
     } else {
         $this->installInfo->removeEnabledBindingUuid($this->uuid);
     }
 }
Ejemplo n.º 4
0
 public function testRenameNonRootPackage()
 {
     $this->initDefaultManager();
     $this->packageFileStorage->expects($this->once())->method('saveRootPackageFile')->with($this->rootPackageFile)->will($this->returnCallback(function (RootPackageFile $rootPackageFile) {
         PHPUnit_Framework_Assert::assertTrue($rootPackageFile->hasInstallInfo('vendor/new'));
         PHPUnit_Framework_Assert::assertFalse($rootPackageFile->hasInstallInfo('vendor/package1'));
     }));
     $this->installInfo1->addDisabledBindingUuid($uuid = Uuid::uuid4());
     $this->assertSame('vendor/package1', $this->installInfo1->getPackageName());
     $this->assertTrue($this->manager->hasPackage('vendor/package1'));
     $this->manager->renamePackage('vendor/package1', 'vendor/new');
     $this->assertTrue($this->rootPackageFile->hasInstallInfo('vendor/new'));
     $this->assertFalse($this->rootPackageFile->hasInstallInfo('vendor/package1'));
     $this->assertFalse($this->manager->hasPackage('vendor/package1'));
     $this->assertTrue($this->manager->hasPackage('vendor/new'));
     $package = $this->manager->getPackage('vendor/new');
     $installInfo = $this->rootPackageFile->getInstallInfo('vendor/new');
     $this->assertInstanceOf('Puli\\Manager\\Api\\Package\\Package', $package);
     $this->assertSame('vendor/new', $package->getName());
     $this->assertSame($this->packageDir1, $package->getInstallPath());
     $this->assertSame($installInfo, $package->getInstallInfo());
     $this->assertSame('vendor/new', $installInfo->getPackageName());
     $this->assertSame('../package1', $installInfo->getInstallPath());
     $this->assertSame(array($uuid), $installInfo->getDisabledBindingUuids());
 }
Ejemplo n.º 5
0
 public function testRemoveDisabledBindingUuid()
 {
     $installInfo = new InstallInfo('vendor/package', '/path');
     $uuid = Uuid::uuid4();
     $installInfo->addDisabledBindingUuid($uuid);
     $installInfo->removeDisabledBindingUuid($uuid);
     $this->assertSame(array(), $installInfo->getDisabledBindingUuids());
 }
Ejemplo n.º 6
0
 public function testBuildDiscoveryOnlyIncludesEnabledBindingsOfInstalledPackages()
 {
     $this->initDefaultManager();
     $this->packageFile1->addBindingDescriptor($binding1 = new BindingDescriptor('/path1', 'my/type'));
     $this->packageFile1->addBindingDescriptor($binding2 = new BindingDescriptor('/path2', 'my/type'));
     $this->installInfo1->addDisabledBindingUuid($binding2->getUuid());
     $this->packageFile1->addTypeDescriptor($bindingType = new BindingTypeDescriptor('my/type'));
     $this->discovery->expects($this->once())->method('defineType')->with($bindingType->toBindingType());
     $this->discovery->expects($this->once())->method('bind')->with('/path1', 'my/type', array(), 'glob');
     $this->manager->buildDiscovery();
 }
Ejemplo n.º 7
0
 public function testReadFullRootPackageFile()
 {
     $packageFile = $this->reader->readRootPackageFile(__DIR__ . '/Fixtures/json/full-root.json', $this->baseConfig);
     $installInfo1 = new InstallInfo('vendor/package1', '/path/to/package1');
     $installInfo1->setInstallerName('composer');
     $installInfo1->addEnabledBindingUuid(Uuid::fromString('a54e5668-2b36-43f4-a32c-2d175092b77d'));
     $installInfo1->addDisabledBindingUuid(Uuid::fromString('4d02ee67-d845-4789-a9c1-8301351c6f5a'));
     $installInfo2 = new InstallInfo('vendor/package2', '/path/to/package2');
     $this->assertInstanceOf('Puli\\Manager\\Api\\Package\\RootPackageFile', $packageFile);
     $this->assertSame(__DIR__ . '/Fixtures/json/full-root.json', $packageFile->getPath());
     $this->assertFullConfig($packageFile);
     $this->assertSame(array('acme/blog-extension1', 'acme/blog-extension2'), $packageFile->getOverrideOrder());
     $this->assertEquals(array($installInfo1, $installInfo2), $packageFile->getInstallInfos());
     $config = $packageFile->getConfig();
     $this->assertSame('puli-dir', $config->get(Config::PULI_DIR));
     $this->assertSame('Puli\\MyFactory', $config->get(Config::FACTORY_OUT_CLASS));
     $this->assertSame('puli-dir/MyFactory.php', $config->get(Config::FACTORY_OUT_FILE));
     $this->assertSame('my-type', $config->get(Config::REPOSITORY_TYPE));
     $this->assertSame('puli-dir/my-repo', $config->get(Config::REPOSITORY_PATH));
     $this->assertSame('my-store-type', $config->get(Config::DISCOVERY_STORE_TYPE));
 }
Ejemplo n.º 8
0
 public function testWriteRootPackageFileSortsPackageBindings()
 {
     $installInfo = new InstallInfo('vendor/package1', '/path/to/package1');
     $installInfo->addEnabledBindingUuid(Uuid::fromString('c54e5668-2b36-43f4-a32c-2d175092b77d'));
     $installInfo->addEnabledBindingUuid(Uuid::fromString('a54e5668-2b36-43f4-a32c-2d175092b77d'));
     $installInfo->addEnabledBindingUuid(Uuid::fromString('b54e5668-2b36-43f4-a32c-2d175092b77d'));
     $installInfo->addDisabledBindingUuid(Uuid::fromString('6d02ee67-d845-4789-a9c1-8301351c6f5a'));
     $installInfo->addDisabledBindingUuid(Uuid::fromString('4d02ee67-d845-4789-a9c1-8301351c6f5a'));
     $installInfo->addDisabledBindingUuid(Uuid::fromString('5d02ee67-d845-4789-a9c1-8301351c6f5a'));
     $packageFile = new RootPackageFile();
     $packageFile->addInstallInfo($installInfo);
     $this->writer->writePackageFile($packageFile, $this->tempFile);
     $this->assertFileExists($this->tempFile);
     $this->assertJsonFileEquals(__DIR__ . '/Fixtures/json/sorted-package-bindings.json', $this->tempFile);
 }
Ejemplo n.º 9
0
 public function testUnserializeFullRootPackageFile()
 {
     $packageFile = $this->serializer->unserializeRootPackageFile(self::FULL_ROOT_JSON, '/path', $this->baseConfig);
     $installInfo1 = new InstallInfo('vendor/package1', '/path/to/package1');
     $installInfo1->setInstallerName('composer');
     $installInfo1->addDisabledBindingUuid(Uuid::fromString('4d02ee67-d845-4789-a9c1-8301351c6f5a'));
     $installInfo2 = new InstallInfo('vendor/package2', '/path/to/package2');
     $installInfo2->setEnvironment(Environment::DEV);
     $this->assertInstanceOf('Puli\\Manager\\Api\\Package\\RootPackageFile', $packageFile);
     $this->assertSame('/path', $packageFile->getPath());
     $this->assertFullConfig($packageFile);
     $this->assertSame(array('acme/blog-extension1', 'acme/blog-extension2'), $packageFile->getOverrideOrder());
     $this->assertEquals(array($installInfo1, $installInfo2), $packageFile->getInstallInfos());
     $config = $packageFile->getConfig();
     $this->assertSame('puli-dir', $config->get(Config::PULI_DIR));
     $this->assertSame('Puli\\MyFactory', $config->get(Config::FACTORY_OUT_CLASS));
     $this->assertSame('puli-dir/MyFactory.php', $config->get(Config::FACTORY_OUT_FILE));
     $this->assertSame('my-type', $config->get(Config::REPOSITORY_TYPE));
     $this->assertSame('puli-dir/my-repo', $config->get(Config::REPOSITORY_PATH));
     $this->assertSame('my-store-type', $config->get(Config::DISCOVERY_STORE_TYPE));
 }
Ejemplo n.º 10
0
 private function populateRootConfig(RootPackageFile $packageFile, \stdClass $jsonData)
 {
     if (isset($jsonData->{'override-order'})) {
         $packageFile->setOverrideOrder((array) $jsonData->{'override-order'});
     }
     if (isset($jsonData->plugins)) {
         $packageFile->setPluginClasses($jsonData->plugins);
     }
     if (isset($jsonData->config)) {
         $config = $packageFile->getConfig();
         foreach ($this->objectsToArrays($jsonData->config) as $key => $value) {
             $config->set($key, $value);
         }
     }
     if (isset($jsonData->packages)) {
         foreach ($jsonData->packages as $packageName => $packageData) {
             $installInfo = new InstallInfo($packageName, $packageData->{'install-path'});
             if (isset($packageData->installer)) {
                 $installInfo->setInstallerName($packageData->installer);
             }
             if (isset($packageData->{'enabled-bindings'})) {
                 foreach ($packageData->{'enabled-bindings'} as $uuid) {
                     $installInfo->addEnabledBindingUuid(Uuid::fromString($uuid));
                 }
             }
             if (isset($packageData->{'disabled-bindings'})) {
                 foreach ($packageData->{'disabled-bindings'} as $uuid) {
                     $installInfo->addDisabledBindingUuid(Uuid::fromString($uuid));
                 }
             }
             $packageFile->addInstallInfo($installInfo);
         }
     }
 }
Ejemplo n.º 11
0
 private function renameNonRootPackage(Package $package, $newName)
 {
     $previousInstallInfo = $package->getInstallInfo();
     $installInfo = new InstallInfo($newName, $previousInstallInfo->getInstallPath());
     $installInfo->setInstallerName($previousInstallInfo->getInstallerName());
     foreach ($previousInstallInfo->getEnabledBindingUuids() as $uuid) {
         $installInfo->addEnabledBindingUuid($uuid);
     }
     foreach ($previousInstallInfo->getDisabledBindingUuids() as $uuid) {
         $installInfo->addDisabledBindingUuid($uuid);
     }
     $this->rootPackageFile->removeInstallInfo($package->getName());
     $this->rootPackageFile->addInstallInfo($installInfo);
     try {
         $this->packageFileStorage->saveRootPackageFile($this->rootPackageFile);
     } catch (Exception $e) {
         $this->rootPackageFile->removeInstallInfo($newName);
         $this->rootPackageFile->addInstallInfo($previousInstallInfo);
         throw $e;
     }
     $this->packages->remove($package->getName());
     $this->packages->add(new Package($package->getPackageFile(), $package->getInstallPath(), $installInfo, $package->getLoadErrors()));
 }