public function testAppendCmdOutput() { $io = new NullIO(); $pkg = new Package('test/test', 1, 1); $extra = ['bash-profile-dir' => dirname(self::$file)]; $pkg->setExtra($extra); # Is appendable? $this->assertFileExists(self::$file); # Pretty much the same as the internal behavior. # This test as well tests if the tmp file setup worked out in the setup method. $source = file_get_contents(__DIR__ . '/../ci/.wpcli_profile'); $result = file_put_contents(self::$file, $source, FILE_APPEND); $this->assertInternalType('integer', $result); $this->assertTrue(false !== strpos($source, file_get_contents(self::$file))); # Make and add file, check against existing data, … $this->assertTrue(Setup::appendCmd($io, $pkg)); # …repetitive calls do not duplicate the appended auto-complete script. $this->assertFalse(Setup::appendCmd($io, $pkg)); }
public function build(Addon $addon) { $composer = $this->packagist->getComposer(); $downloader = $composer->getDownloadManager(); $packageVersions = $this->packagist->getPackageVersions($addon->Name); $time = time(); if (!$packageVersions) { throw new Exception('Could not find corresponding Packagist versions'); } // Get the latest local and packagist version pair. $version = $addon->Versions()->filter('Development', true)->first(); foreach ($packageVersions as $packageVersion) { if ($packageVersion->getVersionNormalized() != $version->Version) { continue; } $path = implode('/', array(TEMP_FOLDER, self::ADDONS_DIR, $addon->Name)); // Convert PackagistAPI result into class compatible with Composer logic $package = new Package($addon->Name, $packageVersion->getVersionNormalized(), $packageVersion->getVersion()); $package->setExtra($packageVersion->getExtra()); if ($source = $packageVersion->getSource()) { $package->setSourceUrl($source->getUrl()); $package->setSourceType($source->getType()); $package->setSourceReference($source->getReference()); } if ($dist = $packageVersion->getDist()) { $package->setDistUrl($dist->getUrl()); $package->setDistType($dist->getType()); $package->setDistReference($dist->getReference()); } $this->download($package, $path); $this->buildReadme($addon, $path); $this->buildScreenshots($addon, $package, $path); } $addon->LastBuilt = $time; $addon->write(); }
/** * testCustomInstallerName */ public function testCustomInstallerName() { $installer = new Installer($this->io, $this->composer); $package = new Package('shama/cakephp-ftp-plugin', '1.0.0', '1.0.0'); $package->setType('cakephp-plugin'); $package->setExtra(array('installer-name' => 'FTP')); $result = $installer->getInstallPath($package); $this->assertEquals('Plugin/FTP/', $result); }
/** * Get a simple copy of the package. * * @return Package */ public function getPackageCopy() { $copy = new Package($this->package->getName(), $this->package->getVersion(), $this->package->getPrettyVersion()); $copy->setType($this->package->getType()); $copy->setExtra($this->package->getExtra()); return $copy; }
/** * @param array $releases * @param string $connectPackage * @return RepositoryInterface */ private function addPackages(array $releases, $connectPackage) { return new ArrayRepository(array_map(function ($release) use($connectPackage) { $distUrl = sprintf($this->distUrlFormat, $connectPackage, $release, $connectPackage, $release); $package = new Package(strtolower($connectPackage), $release, $release); $package->setDistUrl($distUrl); $package->setDistType('tar'); $package->setType('magento-module'); $package->setExtra(['package-xml' => "package.xml"]); return $package; }, $releases)); }
/** * @param array $releases * @param string $connectPackage * @param VersionParser $versionParser * @return RepositoryInterface */ private function addPackages(array $releases, $connectPackage, VersionParser $versionParser) { $releases = array_filter($releases, function ($release) use($versionParser) { try { $versionParser->normalize($release); } catch (UnexpectedValueException $e) { $this->writeVerbose(sprintf('Version "%s" is not valid. Skipping this version.', $release)); return false; } return true; }); return new ArrayRepository(array_map(function ($release) use($connectPackage, $versionParser) { $distUrl = sprintf($this->distUrlFormat, $connectPackage, $release, $connectPackage, $release); $release = $versionParser->normalize($release); $package = new Package(strtolower($connectPackage), $release, $release); $package->setDistUrl($distUrl); $package->setDistType('tar'); $package->setType('magento-module'); $package->setExtra(['package-xml' => "package.xml"]); return $package; }, $releases)); }
public function testWordPressThemeCustom() { $themeName = 'theme-name'; $packageName = "wpackagist/{$themeName}"; $installer = new Installer($this->io, $this->composer); $package = new Package($packageName, '1.0.0', '1.0.0'); $package->setType('wordpress-theme'); $base = 'base'; $package->setExtra(['wordpress-base' => $base]); $path = $installer->getInstallPath($package); $expected = "{$base}/wp-content/themes/{$themeName}"; $this->assertEquals($expected, $path); }
public function testUninstall() { $this->fs->ensureDirectoryExists($this->pluginDir); $installer = new GingerInstaller($this->io, $this->composer); $repository = new ComposerRepositoryMock(); $package = new Package('gingerwfms/wf-configurator-backend', '1.0.0', '1.0.0'); $package->setType('ginger-backend-plugin'); $package->setExtra(array('plugin-namespace' => 'WfConfiguratorBackend')); $repository->addPackage($package); $gate = new Gate(); $mockBus = new CqrsBusMock(); $pluginNamespace = ''; $pluginName = ''; $pluginType = ''; $pluginVersion = ''; $mockBus->mapCommand('GingerPluginInstaller\\Cqrs\\UninstallPluginCommand', function (UninstallPluginCommand $command) use(&$pluginNamespace, &$pluginName, &$pluginType, &$pluginVersion) { $pluginNamespace = $command->getPluginNamespace(); $pluginName = $command->getPluginName(); $pluginType = $command->getPluginType(); $pluginVersion = $command->getPluginVersion(); }); $gate->attach($mockBus); $gate->setDefaultBusName($mockBus->getName()); Bootstrap::getServiceManager()->setAllowOverride(true); Bootstrap::getServiceManager()->setService('malocher.cqrs.gate', $gate); $installer->uninstall($repository, $package); $this->assertSame('WfConfiguratorBackend', $pluginNamespace); $this->assertSame('gingerwfms/wf-configurator-backend', $pluginName); $this->assertSame('ginger-backend-plugin', $pluginType); $this->assertSame('1.0.0', $pluginVersion); }
/** * @param string $name * @param string $theme * @param array $extra * @param bool $createAssets * @param bool $addGlob * @param bool $addFiles * @return Package */ public function createStaticPackage($name = 'some/static', $theme = 'package/theme', $extra = array(), $createAssets = true, $addGlob = false, $addFiles = false) { $package = new Package($name, "1.0.0", $name); $package->setExtra($extra); $package->setType('static'); $rootPackageExtra = array_merge_recursive($this->composer->getPackage()->getExtra(), array('static-map' => array($name => array($theme => array(array('src' => 'assets', 'dest' => 'assets')))))); $this->composer->getPackage()->setExtra($rootPackageExtra); if ($createAssets) { $this->createStaticPackageAssets($package); } if ($addGlob) { $this->addGlobFiles($package); } if ($addFiles) { $this->addStandardFiles($package); } return $package; }
/** * testPackageExtraOptions * * @dataProvider dataForTestPackageExtraOptions */ public function testPackageExtraOptions($type, $path, $name, array $extra) { $installer = new BundleInstaller($this->io, $this->composer); $package = new Package($name, '1.0.0', '1.0.0'); $package->setType($type); $package->setExtra($extra); $result = $installer->getInstallPath($package); $this->assertEquals($path, $result); }