/**
  * Runs the command and returns it's output.
  *
  * @param array $input   Command input.
  * @param array $options Command tester options.
  *
  * @return string
  */
 protected function runCommand(array $input = array(), array $options = array())
 {
     $input['command'] = $this->command->getName();
     $options['interactive'] = true;
     $this->commandTester->execute($input, $options);
     return $this->commandTester->getDisplay();
 }
 /**
  * Validates command setting usage.
  *
  * @param string          $name     Name.
  * @param AbstractCommand $command  Command to get settings from.
  * @param string          $raw_path Raw path.
  *
  * @return AbstractConfigSetting
  * @throws \LogicException When command don't have any config settings to provide.
  */
 protected function getSetting($name, AbstractCommand $command, $raw_path)
 {
     if (!$command instanceof IConfigAwareCommand) {
         throw new \LogicException('The "' . $command->getName() . '" command does not have any settings.');
     }
     $config_setting = $this->findSetting($name, $command->getConfigSettings(), $command->getName());
     if ($config_setting->isWithinScope(AbstractConfigSetting::SCOPE_WORKING_COPY)) {
         $config_setting->setWorkingCopyUrl($this->workingCopyResolver->getWorkingCopyUrl($raw_path));
     }
     $config_setting->setEditor($this->configEditor);
     return $config_setting;
 }