public function testDoNotSetBootstrapFileIfAlreadySet()
 {
     $listeners = $this->plugin->getSubscribedEvents();
     $this->assertArrayHasKey(ScriptEvents::POST_AUTOLOAD_DUMP, $listeners);
     $listener = $listeners[ScriptEvents::POST_AUTOLOAD_DUMP];
     $event = new CommandEvent(ScriptEvents::POST_AUTOLOAD_DUMP, $this->composer, $this->io);
     $this->io->expects($this->exactly(2))->method('write');
     $this->puliRunner->expects($this->at(2))->method('run')->with("config 'bootstrap-file' --parsed")->willReturn("my/bootstrap-file.php\n");
     $this->puliRunner->expects($this->exactly(3))->method('run');
     $this->plugin->{$listener}($event);
 }
 public function testInsertFactoryConstantIntoAutoload()
 {
     $listeners = $this->plugin->getSubscribedEvents();
     $this->assertArrayHasKey(ScriptEvents::POST_AUTOLOAD_DUMP, $listeners);
     $listener = $listeners[ScriptEvents::POST_AUTOLOAD_DUMP];
     $event = new CommandEvent(ScriptEvents::POST_AUTOLOAD_DUMP, $this->composer, $this->io);
     $this->io->expects($this->at(0))->method('write')->with('<info>Generating PULI_FACTORY_CLASS constant</info>');
     $this->io->expects($this->at(1))->method('write')->with('<info>Registering Puli\\MyFactory with the class-map autoloader</info>');
     $this->puliRunner->expects($this->at(0))->method('run')->with("config 'factory.in.class' --parsed")->willReturn("Puli\\MyFactory\n");
     $this->puliRunner->expects($this->at(1))->method('run')->with("config 'factory.in.file' --parsed")->willReturn("My/Factory.php\n");
     $this->plugin->{$listener}($event);
     $this->assertFileExists($this->tempDir . '/the-vendor/autoload.php');
     require $this->tempDir . '/the-vendor/autoload.php';
     $this->assertTrue(defined('PULI_FACTORY_CLASS'));
     $this->assertSame('Puli\\MyFactory', PULI_FACTORY_CLASS);
 }
 private function verifyPuliVersion()
 {
     $versionString = $this->puliRunner->run('-V');
     if (!preg_match('~^Puli version (\\S+)$~', $versionString, $matches)) {
         throw new RuntimeException(sprintf('Could not determine Puli version. "puli -V" returned: %s', $versionString));
     }
     // the development build of the plugin is always considered compatible
     // with the development build of the CLI
     // Split strings to prevent replacement during release
     if ('@package_' . 'version@' === self::VERSION && '@package_' . 'version@' === $matches[1]) {
         return;
     }
     if (version_compare($matches[1], self::MIN_CLI_VERSION, '<')) {
         throw new RuntimeException(sprintf('Found an unsupported version of the Puli CLI: %s. Please ' . 'upgrade to version %s or higher. You can also install the ' . 'puli/cli dependency at version %s in your project.', $matches[1], self::MIN_CLI_VERSION, self::MIN_CLI_VERSION));
     }
     if (version_compare($matches[1], self::MAX_CLI_VERSION, '>')) {
         throw new RuntimeException(sprintf('Found an unsupported version of the Puli CLI: %s. Please ' . 'downgrade to a lower version than %s. You can also install ' . 'the puli/cli dependency in your project.', $matches[1], self::MAX_CLI_VERSION));
     }
 }
 private function renamePackage($name, $newName)
 {
     $this->puliRunner->run('package --rename %old_name% %new_name%', array('old_name' => $name, 'new_name' => $newName));
 }
 private function renamePackage($name, $newName)
 {
     $this->puliRunner->run(sprintf('package --rename %s %s', escapeshellarg($name), escapeshellarg($newName)));
 }