diff --git a/cake/console/cake.php b/cake/console/cake.php index 72236b84a..d62b88002 100644 --- a/cake/console/cake.php +++ b/cake/console/cake.php @@ -344,7 +344,7 @@ class ShellDispatcher { } return $Shell->{$task}->execute(); } - $methods = get_class_methods('Shell'); + $methods = array_diff(get_class_methods('Shell'), array('help')); } $methods = array_diff(get_class_methods($Shell), $methods); $added = in_array(strtolower($arg), array_map('strtolower', $methods)); diff --git a/cake/tests/cases/console/cake.test.php b/cake/tests/cases/console/cake.test.php index 914890223..26d8faf5f 100644 --- a/cake/tests/cases/console/cake.test.php +++ b/cake/tests/cases/console/cake.test.php @@ -514,6 +514,17 @@ class ShellDispatcherTest extends CakeTestCase { $this->assertTrue($result); $this->assertEqual($Dispatcher->args, array('initdb')); + $Shell = new MockWithMainShell(); + $Shell->setReturnValue('main', true); + $Shell->expectOnce('startup'); + $Shell->expectOnce('help'); + $Dispatcher->TestShell =& $Shell; + + $Dispatcher->args = array('mock_with_main', 'help'); + $result = $Dispatcher->dispatch(); + $this->assertNull($result); + $this->assertEqual($Dispatcher->args, array()); + $Shell = new MockWithMainShell(); $Shell->setReturnValue('main', true); $Shell->expectNever('hr'); @@ -811,6 +822,19 @@ class ShellDispatcherTest extends CakeTestCase { $result = $Dispatcher->dispatch(); $this->assertTrue($result); $this->assertEqual($Dispatcher->args, array()); + + $Shell = new MockWeekShell(); + $Task = new MockOnSundayTask(); + $Task->expectNever('execute'); + $Task->expectOnce('help'); + + $Shell->MockOnSunday =& $Task; + $Shell->taskNames = array('MockOnSunday'); + $Dispatcher->TestShell =& $Shell; + + $Dispatcher->args = array('mock_week', 'mock_on_sunday', 'help'); + $result = $Dispatcher->dispatch(); + $this->assertTrue($result); } /** * Verify shifting of arguments