From 1954c7c3509597607e96f013ebad0b128058ff3b Mon Sep 17 00:00:00 2001 From: mark_story Date: Mon, 18 Oct 2010 23:38:14 -0400 Subject: [PATCH] Moving tests around and starting to build out HelpFormatter for generating both text and xml help. Xml help in consoles is great for IDE consumption. --- cake/console/libs/help_formatter.php | 48 ++++ .../console/libs/help_formatter.test.php | 235 ++++++++++++++++++ 2 files changed, 283 insertions(+) create mode 100644 cake/console/libs/help_formatter.php create mode 100644 cake/tests/cases/console/libs/help_formatter.test.php diff --git a/cake/console/libs/help_formatter.php b/cake/console/libs/help_formatter.php new file mode 100644 index 000000000..96a024202 --- /dev/null +++ b/cake/console/libs/help_formatter.php @@ -0,0 +1,48 @@ +_parser = $parser; + } + +/** + * Get the help as text. + * + * @return string + */ + public function text() { + + } + +/** + * Get the help as an xml string. + * + * @return string + */ + public function xml() { + + } +} \ No newline at end of file diff --git a/cake/tests/cases/console/libs/help_formatter.test.php b/cake/tests/cases/console/libs/help_formatter.test.php new file mode 100644 index 000000000..06a24d96c --- /dev/null +++ b/cake/tests/cases/console/libs/help_formatter.test.php @@ -0,0 +1,235 @@ +description(__('This is fifteen This is fifteen This is fifteen')) + ->addOption('four', array('help' => 'this is help text this is help text')) + ->addArgument('four', array('help' => 'this is help text this is help text')) + ->addSubcommand('four', array('help' => 'this is help text this is help text')); + $result = $parser->help(null, 30); + $expected = <<Usage: +cake test [subcommand] [-h] [--four] [] + +Subcommands: + +four this is help text this + is help text + +To see help on a subcommand use `cake test [subcommand] --help` + +Options: + +--help, -h Display this help. +--four this is help text + this is help text + +Arguments: + +four this is help text this + is help text + (optional) + +TEXT; + $this->assertEquals($expected, $result, 'Generated help is too wide'); + } + +/** + * test help() with options and arguments that have choices. + * + * @return void + */ + function testHelpWithChoices() { + $parser = new ConsoleOptionParser('mycommand', false); + $parser->addOption('test', array('help' => 'A test option.', 'choices' => array('one', 'two'))) + ->addArgument('type', array( + 'help' => 'Resource type.', + 'choices' => array('aco', 'aro'), + 'required' => true + )) + ->addArgument('other_longer', array('help' => 'Another argument.')); + + $result = $parser->help(); + $expected = <<Usage: +cake mycommand [-h] [--test one|two] [] + +Options: + +--help, -h Display this help. +--test A test option. (choices: one|two) + +Arguments: + +type Resource type. (choices: aco|aro) +other_longer Another argument. (optional) + +TEXT; + $this->assertEquals($expected, $result, 'Help does not match'); + } + +/** + * test description and epilog in the help + * + * @return void + */ + function testHelpDescriptionAndEpilog() { + $parser = new ConsoleOptionParser('mycommand', false); + $parser->description('Description text') + ->epilog('epilog text') + ->addOption('test', array('help' => 'A test option.')) + ->addArgument('model', array('help' => 'The model to make.', 'required' => true)); + + $result = $parser->help(); + $expected = <<Usage: +cake mycommand [-h] [--test] + +Options: + +--help, -h Display this help. +--test A test option. + +Arguments: + +model The model to make. + +epilog text + +TEXT; + $this->assertEquals($expected, $result, 'Help is wrong.'); + } + +/** + * test that help() outputs subcommands. + * + * @return void + */ + function testHelpSubcommand() { + $parser = new ConsoleOptionParser('mycommand', false); + $parser->addSubcommand('method', array('help' => 'This is another command')) + ->addOption('test', array('help' => 'A test option.')); + + $result = $parser->help(); + $expected = <<Usage: +cake mycommand [subcommand] [-h] [--test] + +Subcommands: + +method This is another command + +To see help on a subcommand use `cake mycommand [subcommand] --help` + +Options: + +--help, -h Display this help. +--test A test option. + +TEXT; + $this->assertEquals($expected, $result, 'Help is not correct.'); + } + +/** + * test that help() with a command param shows the help for a subcommand + * + * @return void + */ + function testHelpSubcommandHelp() { + $subParser = new ConsoleOptionParser('method', false); + $subParser->addOption('connection', array('help' => 'Db connection.')); + + $parser = new ConsoleOptionParser('mycommand', false); + $parser->addSubcommand('method', array( + 'help' => 'This is another command', + 'parser' => $subParser + )) + ->addOption('test', array('help' => 'A test option.')); + + $result = $parser->help('method'); + $expected = <<Usage: +cake mycommand method [-h] [--connection] + +Options: + +--help, -h Display this help. +--connection Db connection. + +TEXT; + $this->assertEquals($expected, $result, 'Help is not correct.'); + } + +/** + * test getting help with defined options. + * + * @return void + */ + function testHelpWithOptions() { + $parser = new ConsoleOptionParser('mycommand', false); + $parser->addOption('test', array('help' => 'A test option.')) + ->addOption('connection', array( + 'short' => 'c', 'help' => 'The connection to use.', 'default' => 'default' + )); + + $result = $parser->help(); + $expected = <<Usage: +cake mycommand [-h] [--test] [-c default] + +Options: + +--help, -h Display this help. +--test A test option. +--connection, -c The connection to use. (default: + default) + +TEXT; + $this->assertEquals($expected, $result, 'Help does not match'); + } + +/** + * test getting help with defined options. + * + * @return void + */ + function testHelpWithOptionsAndArguments() { + $parser = new ConsoleOptionParser('mycommand', false); + $parser->addOption('test', array('help' => 'A test option.')) + ->addArgument('model', array('help' => 'The model to make.', 'required' => true)) + ->addArgument('other_longer', array('help' => 'Another argument.')); + + $result = $parser->help(); + $expected = <<Usage: +cake mycommand [-h] [--test] [] + +Options: + +--help, -h Display this help. +--test A test option. + +Arguments: + +model The model to make. +other_longer Another argument. (optional) + +TEXT; + $this->assertEquals($expected, $result, 'Help does not match'); + } +}