/**
  * {@inheritdoc}
  *
  * @throws \RuntimeException When invalid mode is specified.
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $mode = $this->io->getOption('mode');
     if (!in_array($mode, $this->getModes())) {
         throw new \RuntimeException('The "' . $mode . '" mode is unknown.');
     }
     $wc_path = $this->getWorkingCopyPath();
     switch ($mode) {
         case self::MODE_SHOW:
             $recorded_conflicts = $this->_workingCopyConflictTracker->getRecordedConflicts($wc_path);
             if (!$recorded_conflicts) {
                 $this->io->writeln('<info>The working copy doesn\'t have any recorded conflicts.</info>');
             } else {
                 $this->io->writeln('<error>Recorded Conflicts (' . count($recorded_conflicts) . ' paths):</error>');
                 foreach ($recorded_conflicts as $conflicted_path) {
                     $this->io->writeln(' * ' . $conflicted_path);
                 }
             }
             break;
         case self::MODE_ADD:
             $this->_workingCopyConflictTracker->add($wc_path);
             $this->io->writeln('<info>Conflicts updated.</info>');
             break;
         case self::MODE_REPLACE:
             $this->_workingCopyConflictTracker->replace($wc_path);
             $this->io->writeln('<info>Conflicts updated.</info>');
             break;
         case self::MODE_ERASE:
             $this->_workingCopyConflictTracker->erase($wc_path);
             $this->io->writeln('<info>Conflicts erased.</info>');
             break;
     }
 }
 /**
  * @expectedException \LogicException
  * @expectedExceptionMessage The working copy at "/path/to/working-copy" has no conflicts to be added.
  */
 public function testReplaceError()
 {
     $wc_path = '/path/to/working-copy';
     $this->expectRecordedConflicts($wc_path);
     $this->repositoryConnector->getWorkingCopyConflicts($wc_path)->willReturn(array());
     $this->workingCopyConflictTracker->replace($wc_path);
 }