/**
  * Given a big bag of install options, add installers to the collection.
  *
  * @param InstallerCollection $installers Installers will be added to this
  */
 public function addInstallers(InstallerCollection $installers)
 {
     $installers->add(new MoodleInstaller($this->execute, $this->database, $this->moodle, new MoodleConfig(), $this->branch, $this->dataDir));
     $installers->add(new PluginInstaller($this->moodle, $this->plugin, $this->pluginsDir, $this->dumper));
     $installers->add(new VendorInstaller($this->moodle, $this->plugin, $this->execute));
     if ($this->plugin->hasBehatFeatures() || $this->plugin->hasUnitTests()) {
         $installers->add(new TestSuiteInstaller($this->moodle, $this->plugin, $this->execute));
     }
 }
 public function testTotalSteps()
 {
     $installer = new DummyInstaller();
     $installers = new InstallerCollection(new InstallOutput());
     $installers->add($installer);
     $installers->add(new DummyInstaller());
     $installers->add(new DummyInstaller());
     $this->assertEquals($installers->sumStepCount(), $installer->stepCount() * 3);
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $this->factory->addInstallers($this->installers);
     $this->install->runInstallation($this->installers);
     $envDumper = new EnvDumper();
     $envDumper->dump($this->installers->mergeEnv(), $this->envFile);
     // Progress bar does not end with a newline.
     $output->writeln('');
 }
 public function testRunInstallation()
 {
     $output = new InstallOutput();
     $installer = new DummyInstaller();
     $installers = new InstallerCollection($output);
     $installers->add($installer);
     $manager = new Install($output);
     $manager->runInstallation($installers, new EnvDumper());
     $this->assertEquals($installer->stepCount(), $output->getStepCount());
 }