description('This is fifteen This is fifteen This is fifteen') ->addOption('four', ['help' => 'this is help text this is help text']) ->addArgument('four', ['help' => 'this is help text this is help text']) ->addSubcommand('four', ['help' => 'this is help text this is help text']); $formatter = new HelpFormatter($parser); $result = $formatter->text(30); $expected = <<Usage: cake test [subcommand] [--four] [-h] [] Subcommands: four this is help text this is help text To see help on a subcommand use `cake test [subcommand] --help` Options: --four this is help text this is help text --help, -h Display this help. Arguments: four this is help text this is help text (optional) txt; $this->assertTextEquals($expected, $result, 'Generated help is too wide'); } /** * test help() with options and arguments that have choices. * * @return void */ public function testHelpWithChoices() { $parser = new ConsoleOptionParser('mycommand', false); $parser->addOption('test', ['help' => 'A test option.', 'choices' => ['one', 'two']]) ->addArgument('type', [ 'help' => 'Resource type.', 'choices' => ['aco', 'aro'], 'required' => true ]) ->addArgument('other_longer', ['help' => 'Another argument.']); $formatter = new HelpFormatter($parser); $result = $formatter->text(); $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) txt; $this->assertTextEquals($expected, $result, 'Help does not match'); } /** * test description and epilog in the help * * @return void */ public function testHelpDescriptionAndEpilog() { $parser = new ConsoleOptionParser('mycommand', false); $parser->description('Description text') ->epilog('epilog text') ->addOption('test', ['help' => 'A test option.']) ->addArgument('model', ['help' => 'The model to make.', 'required' => true]); $formatter = new HelpFormatter($parser); $result = $formatter->text(); $expected = <<Usage: cake mycommand [-h] [--test] Options: --help, -h Display this help. --test A test option. Arguments: model The model to make. epilog text txt; $this->assertTextEquals($expected, $result, 'Help is wrong.'); } /** * test that help() outputs subcommands. * * @return void */ public function testHelpSubcommand() { $parser = new ConsoleOptionParser('mycommand', false); $parser->addSubcommand('method', ['help' => 'This is another command']) ->addOption('test', ['help' => 'A test option.']); $parser->addSubcommand('plugin', ['help' => 'Create the directory structure, AppController class and testing setup for a new plugin. ' . 'Can create plugins in any of your bootstrapped plugin paths.']); $formatter = new HelpFormatter($parser); $result = $formatter->text(); $expected = <<Usage: cake mycommand [subcommand] [-h] [--test] Subcommands: method This is another command plugin Create the directory structure, AppController class and testing setup for a new plugin. Can create plugins in any of your bootstrapped plugin paths. To see help on a subcommand use `cake mycommand [subcommand] --help` Options: --help, -h Display this help. --test A test option. txt; $this->assertTextEquals($expected, $result, 'Help is not correct.'); } /** * test getting help with defined options. * * @return void */ public function testHelpWithOptions() { $parser = new ConsoleOptionParser('mycommand', false); $parser->addOption('test', ['help' => 'A test option.']) ->addOption('connection', [ 'short' => 'c', 'help' => 'The connection to use.', 'default' => 'default' ]); $formatter = new HelpFormatter($parser); $result = $formatter->text(); $expected = <<Usage: cake mycommand [-c default] [-h] [--test] Options: --connection, -c The connection to use. (default: default) --help, -h Display this help. --test A test option. txt; $this->assertTextEquals($expected, $result, 'Help does not match'); } /** * test getting help with defined options. * * @return void */ public function testHelpWithOptionsAndArguments() { $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->text(); $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) xml; $this->assertTextEquals($expected, $result, 'Help does not match'); } /** * Test that a long set of options doesn't make useless output. * * @return void */ public function testHelpWithLotsOfOptions() { $parser = new ConsoleOptionParser('mycommand', false); $parser ->addOption('test', ['help' => 'A test option.']) ->addOption('test2', ['help' => 'A test option.']) ->addOption('test3', ['help' => 'A test option.']) ->addOption('test4', ['help' => 'A test option.']) ->addOption('test5', ['help' => 'A test option.']) ->addOption('test6', ['help' => 'A test option.']) ->addOption('test7', ['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->text(); $expected = 'cake mycommand [options] []'; $this->assertContains($expected, $result); } /** * Test that a long set of arguments doesn't make useless output. * * @return void */ public function testHelpWithLotsOfArguments() { $parser = new ConsoleOptionParser('mycommand', false); $parser ->addArgument('test', ['help' => 'A test option.']) ->addArgument('test2', ['help' => 'A test option.']) ->addArgument('test3', ['help' => 'A test option.']) ->addArgument('test4', ['help' => 'A test option.']) ->addArgument('test5', ['help' => 'A test option.']) ->addArgument('test6', ['help' => 'A test option.']) ->addArgument('test7', ['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->text(); $expected = 'cake mycommand [-h] [arguments]'; $this->assertContains($expected, $result); } /** * test help() with options and arguments that have choices. * * @return void */ public function testXmlHelpWithChoices() { $parser = new ConsoleOptionParser('mycommand', false); $parser->addOption('test', ['help' => 'A test option.', 'choices' => ['one', 'two']]) ->addArgument('type', [ 'help' => 'Resource type.', 'choices' => ['aco', 'aro'], 'required' => true ]) ->addArgument('other_longer', ['help' => 'Another argument.']); $formatter = new HelpFormatter($parser); $result = $formatter->xml(); $expected = << mycommand Description text aco aro epilog text xml; $this->assertXmlStringNotEqualsXmlString($expected, $result, 'Help does not match'); } /** * test description and epilog in the help * * @return void */ public function testXmlHelpDescriptionAndEpilog() { $parser = new ConsoleOptionParser('mycommand', false); $parser->description('Description text') ->epilog('epilog text') ->addOption('test', ['help' => 'A test option.']) ->addArgument('model', ['help' => 'The model to make.', 'required' => true]); $formatter = new HelpFormatter($parser); $result = $formatter->xml(); $expected = << mycommand Description text epilog text xml; $this->assertXmlStringNotEqualsXmlString($expected, $result, 'Help does not match'); } /** * test that help() outputs subcommands. * * @return void */ public function testXmlHelpSubcommand() { $parser = new ConsoleOptionParser('mycommand', false); $parser->addSubcommand('method', ['help' => 'This is another command']) ->addOption('test', ['help' => 'A test option.']); $formatter = new HelpFormatter($parser); $result = $formatter->xml(); $expected = << mycommand xml; $this->assertXmlStringNotEqualsXmlString($expected, $result, 'Help does not match'); } /** * test getting help with defined options. * * @return void */ public function testXmlHelpWithOptions() { $parser = new ConsoleOptionParser('mycommand', false); $parser->addOption('test', ['help' => 'A test option.']) ->addOption('connection', [ 'short' => 'c', 'help' => 'The connection to use.', 'default' => 'default' ]); $formatter = new HelpFormatter($parser); $result = $formatter->xml(); $expected = << mycommand xml; $this->assertXmlStringNotEqualsXmlString($expected, $result, 'Help does not match'); } /** * test getting help with defined options. * * @return void */ public function testXmlHelpWithOptionsAndArguments() { $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(); $expected = << mycommand xml; $this->assertXmlStringNotEqualsXmlString($expected, $result, 'Help does not match'); } /** * 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); } }