Skip to content

Commit

Permalink
Moving tests over to the HelpFormatter.
Browse files Browse the repository at this point in the history
  • Loading branch information
markstory committed Oct 20, 2010
1 parent 78e76a2 commit 52a4944
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 236 deletions.
5 changes: 3 additions & 2 deletions cake/console/libs/help_formatter.php
Expand Up @@ -29,11 +29,12 @@ public function __construct(ConsoleOptionParser $parser) {
}

/**
* Get the help as text.
* Get the help as formatted text suitable for output on the command line.
*
* @param integer $width The width of the help output.
* @return string
*/
public function text($width) {
public function text($width = 72) {
$parser = $this->_parser;
$out = array();
$description = $parser->description();
Expand Down
198 changes: 0 additions & 198 deletions cake/tests/cases/console/libs/console_option_parser.test.php
Expand Up @@ -366,64 +366,6 @@ function testAddSubcommands() {
$this->assertEquals(2, count($result), 'Not enough subcommands');
}

/**
* 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 = <<<TEXT
<info>Usage:</info>
cake mycommand [-h] [--test] [-c default]
<info>Options:</info>
--help, -h Display this help.
--test A test option.
--connection, -c The connection to use. <comment>(default:
default)</comment>
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 = <<<TEXT
<info>Usage:</info>
cake mycommand [-h] [--test] <model> [<other_longer>]
<info>Options:</info>
--help, -h Display this help.
--test A test option.
<info>Arguments:</info>
model The model to make.
other_longer Another argument. <comment>(optional)</comment>
TEXT;
$this->assertEquals($expected, $result, 'Help does not match');
}

/**
* test that no exception is triggered when help is being generated
*
Expand All @@ -438,104 +380,6 @@ function testHelpNoExceptionWhenGettingHelp() {
$this->assertTrue($result[0]['help']);
}

/**
* 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 = <<<TEXT
<info>Usage:</info>
cake mycommand [-h] [--test one|two] <aco|aro> [<other_longer>]
<info>Options:</info>
--help, -h Display this help.
--test A test option. <comment>(choices: one|two)</comment>
<info>Arguments:</info>
type Resource type. <comment>(choices: aco|aro)</comment>
other_longer Another argument. <comment>(optional)</comment>
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 = <<<TEXT
Description text
<info>Usage:</info>
cake mycommand [-h] [--test] <model>
<info>Options:</info>
--help, -h Display this help.
--test A test option.
<info>Arguments:</info>
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 = <<<TEXT
<info>Usage:</info>
cake mycommand [subcommand] [-h] [--test]
<info>Subcommands:</info>
method This is another command
To see help on a subcommand use <info>`cake mycommand [subcommand] --help`</info>
<info>Options:</info>
--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
*
Expand Down Expand Up @@ -648,46 +492,4 @@ function testParsingWithSubParser() {
$this->assertEquals($expected, $result, 'Sub parser did not parse request.');
}

/**
* test that the console max width is respected when generating help.
*
* @return void
*/
function testWidthFormatting() {
$parser = new ConsoleOptionParser('test', false);
$parser->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 = <<<TEXT
This is fifteen This is
fifteen This is fifteen
<info>Usage:</info>
cake test [subcommand] [-h] [--four] [<four>]
<info>Subcommands:</info>
four this is help text this
is help text
To see help on a subcommand use <info>`cake test [subcommand] --help`</info>
<info>Options:</info>
--help, -h Display this help.
--four this is help text
this is help text
<info>Arguments:</info>
four this is help text this
is help text
<comment>(optional)</comment>
TEXT;
$this->assertEquals($expected, $result, 'Generated help is too wide');
}

}
49 changes: 13 additions & 36 deletions cake/tests/cases/console/libs/help_formatter.test.php
Expand Up @@ -16,7 +16,9 @@ function testWidthFormatting() {
->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);

$formatter = new HelpFormatter($parser);
$result = $formatter->text(30);
$expected = <<<TEXT
This is fifteen This is
fifteen This is fifteen
Expand Down Expand Up @@ -62,7 +64,8 @@ function testHelpWithChoices() {
))
->addArgument('other_longer', array('help' => 'Another argument.'));

$result = $parser->help();
$formatter = new HelpFormatter($parser);
$result = $formatter->text();
$expected = <<<TEXT
<info>Usage:</info>
cake mycommand [-h] [--test one|two] <aco|aro> [<other_longer>]
Expand Down Expand Up @@ -93,7 +96,8 @@ function testHelpDescriptionAndEpilog() {
->addOption('test', array('help' => 'A test option.'))
->addArgument('model', array('help' => 'The model to make.', 'required' => true));

$result = $parser->help();
$formatter = new HelpFormatter($parser);
$result = $formatter->text();
$expected = <<<TEXT
Description text
Expand Down Expand Up @@ -125,7 +129,8 @@ function testHelpSubcommand() {
$parser->addSubcommand('method', array('help' => 'This is another command'))
->addOption('test', array('help' => 'A test option.'));

$result = $parser->help();
$formatter = new HelpFormatter($parser);
$result = $formatter->text();
$expected = <<<TEXT
<info>Usage:</info>
cake mycommand [subcommand] [-h] [--test]
Expand All @@ -141,36 +146,6 @@ function testHelpSubcommand() {
--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 = <<<TEXT
<info>Usage:</info>
cake mycommand method [-h] [--connection]
<info>Options:</info>
--help, -h Display this help.
--connection Db connection.
TEXT;
$this->assertEquals($expected, $result, 'Help is not correct.');
}
Expand All @@ -187,7 +162,8 @@ function testHelpWithOptions() {
'short' => 'c', 'help' => 'The connection to use.', 'default' => 'default'
));

$result = $parser->help();
$formatter = new HelpFormatter($parser);
$result = $formatter->text();
$expected = <<<TEXT
<info>Usage:</info>
cake mycommand [-h] [--test] [-c default]
Expand All @@ -214,7 +190,8 @@ function testHelpWithOptionsAndArguments() {
->addArgument('model', array('help' => 'The model to make.', 'required' => true))
->addArgument('other_longer', array('help' => 'Another argument.'));

$result = $parser->help();
$formatter = new HelpFormatter($parser);
$result = $formatter->text();
$expected = <<<TEXT
<info>Usage:</info>
cake mycommand [-h] [--test] <model> [<other_longer>]
Expand Down

0 comments on commit 52a4944

Please sign in to comment.