/** * @param boolean $isInstalled * @param boolean $isForced * @dataProvider provideCoreBuildTestCases */ public function testCoreBuild($isInstalled, $isForced) { $shouldInstall = !$isInstalled || $isForced; $package = $this->getPackage('bcn/test1', '1.0.0', 'magento-core', self::SOURCE_DIR); $project = new Project(); $project->addPackage($package); $project->setTargetDir(self::TARGET_DIR); $project->setStrategy('copy'); $project->setForce($isForced); $filesystem = $this->getFilesystem(); if (!$isForced) { $filesystem->expects($this->once())->method("exists")->with($this->equalTo(self::TARGET_DIR . DIRECTORY_SEPARATOR . "index.php"))->will($this->returnValue($isInstalled)); } $strategy = $this->getStrategy(); $builder = $this->getPackageBuilder(); if ($shouldInstall) { $builder->expects($this->once())->method('build')->with($this->equalTo($package), $this->equalTo(self::TARGET_DIR), $this->equalTo($strategy)); } else { $builder->expects($this->never())->method('build'); } $manager = new Builder($builder); $manager->setFilesystem($filesystem); $manager->addStrategy('copy', $strategy); $manager->build($project); }
/** * @return Container */ public static function create() { $container = new Container(); $container['locker_file'] = $container->factory(function () { return new JsonFile("composer.lock"); }); $container['locker'] = $container->factory(function (Container $container) { $config = new Config(); $io = new NullIO(); $repositoryManager = new RepositoryManager($io, $config); $installationManager = new InstallationManager(); return new Locker($io, $container['locker_file'], $repositoryManager, $installationManager, ""); }); $container['repository'] = $container->factory(function (Container $container) { return $container->getLocker()->getLockedRepository(true); }); $container['logger'] = $container->factory(function () { $logger = new Logger("magebuild"); return $logger; }); $container['builder'] = $container->factory(function (Container $container) { $builder = new PackageBuilder(); $builder->addMapping(new ModmanMapping()); $builder->setFilesystem($container->getFilesystem()); $manager = new Builder($builder); $manager->addStrategy('copy', new CopyStrategy()); $manager->addStrategy('symlink', new SymlinkStrategy()); $manager->setFilesystem($container->getFilesystem()); return $manager; }); $container['root_package'] = $container->factory(function (Container $container) { $config = $container->getRootPackageFile(); return $container->getRootPackageLoader()->load($config->read()); }); $container['root_package_loader'] = $container->factory(function () { return new RootPackageLoader(); }); $container['root_package_file'] = $container->factory(function () { return new JsonFile("composer.json"); }); $container['filesystem'] = $container->factory(function () { return new Filesystem(); }); return $container; }