Skip to content

Commit

Permalink
Adding exception for unknown option usage.
Browse files Browse the repository at this point in the history
  • Loading branch information
markstory committed Oct 14, 2010
1 parent d3c95bc commit 7f5b5c4
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
3 changes: 3 additions & 0 deletions cake/console/console_option_parser.php
Expand Up @@ -420,6 +420,9 @@ protected function _parseShortOption($option, $params) {
* @return array Params with $option added in.
*/
protected function _parseOptionName($name, $params) {
if (!isset($this->_options[$name])) {
throw new InvalidArgumentException(sprintf(__('Unknown option `%s`'), $name));
}
$definition = $this->_options[$name];
$nextValue = $this->_nextToken();
if (!$definition['boolean'] && !empty($nextValue) && $nextValue{0} != '-') {
Expand Down
15 changes: 13 additions & 2 deletions cake/tests/cases/console/console_option_parser.test.php
Expand Up @@ -159,11 +159,22 @@ function testOptionWithBooleanParam() {
$parser = new ConsoleOptionParser();
$parser->addOption('no-commit', array('boolean' => true))
->addOption('table', array('short' => 't'));

$result = $parser->parse(array('--table', 'posts', '--no-commit', 'arg1', 'arg2'));
$expected = array(array('table' => 'posts', 'no-commit' => true), array('arg1', 'arg2'));
$this->assertEquals($expected, $result, 'Boolean option did not parse correctly.');

}

/**
* test parsing options that do not exist.
*
* @expectedException InvalidArgumentException
*/
function testOptionThatDoesNotExist() {
$parser = new ConsoleOptionParser();
$parser->addOption('no-commit', array('boolean' => true));

$result = $parser->parse(array('--fail', 'other'));
}

/**
Expand Down

0 comments on commit 7f5b5c4

Please sign in to comment.