def test_get_positional_args_includes_other_arg(self): parser = ArgumentParser() parser.add_argument("data") option = factory.make_name("opt", sep="_") parser.add_argument(option) self.assertEqual(["data", option], api.ActionHelp.get_positional_args(parser))
def test_get_optional_args_returns_optional_args(self): option = "--%s" % factory.make_name("opt") parser = ArgumentParser(add_help=False) parser.add_argument(option) args = api.ActionHelp.get_optional_args(parser) self.assertEqual([[option]], [action.option_strings for action in args])
def test_compose_positional_args_does_not_end_with_newline(self): arg = factory.make_name('arg', sep='_') parser = ArgumentParser() parser.add_argument(arg) self.assertThat( '\n'.join(api.ActionHelp.compose_positional_args(parser)), Not(EndsWith('\n')))
def test_compose_positional_args_does_not_end_with_newline(self): arg = factory.make_name("arg", sep="_") parser = ArgumentParser() parser.add_argument(arg) self.assertThat( "\n".join(api.ActionHelp.compose_positional_args(parser)), Not(EndsWith("\n")), )
def test_get_positional_args_includes_other_arg(self): parser = ArgumentParser() parser.add_argument('data') option = factory.make_name('opt', sep='_') parser.add_argument(option) self.assertEqual( ['data', option], api.ActionHelp.get_positional_args(parser))
def test_call_shows_full_enchilada(self): usage = factory.make_name("usage") description = factory.make_name("description") epilog = dedent("""\ More detailed description here. Typically more than one line. :param foo: The amount of foo. """).rstrip() arg = factory.make_name("arg", sep="_") parser = ArgumentParser(usage=usage, description=description, epilog=epilog, add_help=False) parser.add_argument(arg) option = "--%s" % factory.make_name("opt") option_help = factory.make_name("help") parser.add_argument(option, help=option_help) params = { "usage": usage, "description": description, "arg": arg, "keyword_args_help": api.ActionHelp.keyword_args_help.rstrip(), "epilog": epilog, "option": option, "option_help": option_help, } expected_text = (dedent("""\ usage: %(usage)s %(description)s Positional arguments: \t%(arg)s %(keyword_args_help)s %(epilog)s Common command-line options: %(option)s \t%(option_help)s """).rstrip() % params) action_help = self.make_help() self.patch(sys, "exit") self.patch(api, "print") # Invoke ActionHelp.__call__, so we can see what it prints. action_help( parser, self.make_namespace(), self.make_values(), self.make_option_string(), ) self.assertThat(api.print, MockCalledOnceWith(expected_text))
def test_call_shows_full_enchilada(self): usage = factory.make_name('usage') description = factory.make_name('description') epilog = dedent("""\ More detailed description here. Typically more than one line. :param foo: The amount of foo. """).rstrip() arg = factory.make_name('arg', sep='_') parser = ArgumentParser( usage=usage, description=description, epilog=epilog, add_help=False) parser.add_argument(arg) option = '--%s' % factory.make_name('opt') option_help = factory.make_name('help') parser.add_argument(option, help=option_help) params = { 'usage': usage, 'description': description, 'arg': arg, 'keyword_args_help': api.ActionHelp.keyword_args_help.rstrip(), 'epilog': epilog, 'option': option, 'option_help': option_help, } expected_text = dedent("""\ usage: %(usage)s %(description)s Positional arguments: \t%(arg)s %(keyword_args_help)s %(epilog)s Common command-line options: %(option)s \t%(option_help)s """).rstrip() % params action_help = self.make_help() self.patch(sys, 'exit') self.patch(api, 'print') # Invoke ActionHelp.__call__, so we can see what it prints. action_help( parser, self.make_namespace(), self.make_values(), self.make_option_string()) self.assertThat(api.print, MockCalledOnceWith(expected_text))
def test_compose_positional_args_describes_positional_args(self): arg = factory.make_name('arg', sep='_') parser = ArgumentParser() parser.add_argument(arg) self.assertEqual( dedent("""\ Positional arguments: \t%s """.rstrip()) % arg, '\n'.join(api.ActionHelp.compose_positional_args(parser)))
def test_compose_optional_args_describes_optional_args(self): long_option = '--%s' % factory.make_name('opt', sep='_') short_option = '-o' option_help = factory.make_name('help') parser = ArgumentParser(add_help=False) parser.add_argument(long_option, short_option, help=option_help) expected_text = dedent("""\ Common command-line options: %s \t%s """) % (', '.join([long_option, short_option]), option_help) self.assertEqual( expected_text.rstrip(), '\n'.join(api.ActionHelp.compose_optional_args(parser)))
def test_compose_optional_args_describes_optional_args(self): long_option = "--%s" % factory.make_name("opt", sep="_") short_option = "-o" option_help = factory.make_name("help") parser = ArgumentParser(add_help=False) parser.add_argument(long_option, short_option, help=option_help) expected_text = (dedent("""\ Common command-line options: %s \t%s """) % (", ".join([long_option, short_option]), option_help)) self.assertEqual( expected_text.rstrip(), "\n".join(api.ActionHelp.compose_optional_args(parser)), )
def test_get_positional_args_ignores_optional_args(self): parser = ArgumentParser() parser.add_argument("--option") self.assertEqual([], api.ActionHelp.get_positional_args(parser))
def test_get_positional_args_returns_empty_if_data_is_only_arg(self): parser = ArgumentParser() parser.add_argument("data") self.assertEqual([], api.ActionHelp.get_positional_args(parser))
def test_get_positional_args_omits_final_data_arg(self): parser = ArgumentParser() option = factory.make_name("opt", sep="_") parser.add_argument(option) parser.add_argument("data") self.assertEqual([option], api.ActionHelp.get_positional_args(parser))
def test_get_positional_args_lists_arguments(self): option = factory.make_name("opt", sep="_") parser = ArgumentParser() parser.add_argument(option) self.assertEqual([option], api.ActionHelp.get_positional_args(parser))