/**
  * Gets the option parser instance and configures it.
  * By overriding this method you can configure the ConsoleOptionParser before returning it.
  *
  * @return ConsoleOptionParser
  * @link http://book.cakephp.org/2.0/en/console-and-shells.html#Shell::getOptionParser
  */
 public function processOptionParser(ConsoleOptionParser $parser)
 {
     return $parser->addOption('process_id', ['help' => 'A process identifier to make locking work with Supervisor']);
 }
 /**
  * Tests merge()
  *
  * @return void
  */
 public function testMerge()
 {
     $parser = new ConsoleOptionParser('test');
     $parser->addOption('test', ['short' => 't', 'boolean' => true])->addArgument('one', ['required' => true, 'choices' => ['a', 'b']])->addArgument('two', ['required' => true]);
     $parserTwo = new ConsoleOptionParser('test');
     $parserTwo->addOption('file', ['short' => 'f', 'boolean' => true])->addOption('output', ['short' => 'o', 'boolean' => true])->addArgument('one', ['required' => true, 'choices' => ['a', 'b']]);
     $parser->merge($parserTwo);
     $result = $parser->toArray();
     $options = $result['options'];
     $this->assertTrue(isset($options['quiet']));
     $this->assertTrue(isset($options['test']));
     $this->assertTrue(isset($options['file']));
     $this->assertTrue(isset($options['output']));
     $this->assertEquals(2, count($result['arguments']));
     $this->assertEquals(6, count($result['options']));
 }
 /**
  * Test xml help as object
  *
  * @return void
  */
 public function testXmlHelpAsObject()
 {
     $parser = new ConsoleOptionParser('mycommand', false);
     $parser->addOption('test', ['help' => 'A test option.'])->addArgument('model', ['help' => 'The model to make.', 'required' => true])->addArgument('other_longer', ['help' => 'Another argument.']);
     $formatter = new HelpFormatter($parser);
     $result = $formatter->xml(false);
     $this->assertInstanceOf('SimpleXmlElement', $result);
 }
 /**
  * test that parse() takes a subcommand argument, and that the subcommand parser
  * is used.
  *
  * @return void
  */
 public function testParsingWithSubParser()
 {
     $parser = new ConsoleOptionParser('test', false);
     $parser->addOption('primary')->addArgument('one', array('required' => true, 'choices' => array('a', 'b')))->addArgument('two', array('required' => true))->addSubcommand('sub', array('parser' => array('options' => array('secondary' => array('boolean' => true), 'fourth' => array('help' => 'fourth option')), 'arguments' => array('sub_arg' => array('choices' => array('c', 'd'))))));
     $result = $parser->parse(array('sub', '--secondary', '--fourth', '4', 'c'));
     $expected = array(array('secondary' => true, 'fourth' => '4', 'help' => false, 'verbose' => false, 'quiet' => false), array('c'));
     $this->assertEquals($expected, $result, 'Sub parser did not parse request.');
 }