示例#1
0
    def test_has_get(self):
        """
        Application.has() and Application.get() should determine and get commands
        """
        application = Application()

        self.assertTrue(application.has('list'),
                        msg='.has() returns true if a command is registered')
        self.assertFalse(
            application.has('afoobar'),
            msg='.has() returns false if a command is not registered')

        foo = FooCommand()
        application.add(foo)

        self.assertTrue(application.has('afoobar'),
                        msg='.has() returns true if an alias is registered')
        self.assertEqual(foo,
                         application.get('foo:bar'),
                         msg='.get() returns a command by name')
        self.assertEqual(foo,
                         application.get('afoobar'),
                         msg='.get() returns a command by alias')

        application = Application()
        application.add(foo)
        # Simulate help
        application._want_helps = True
        self.assertTrue(
            isinstance(application.get('foo:bar'), HelpCommand),
            msg=
            '.get() returns the help command if --help is provided as the input'
        )
示例#2
0
def test_has_get(app: Application):
    assert app.has("list")
    assert not app.has("afoobar")

    foo = FooCommand()
    app.add(foo)

    assert app.has("foo bar")
    assert app.has("afoobar")
    assert app.get("foo bar") == foo
    assert app.get("afoobar") == foo
示例#3
0
    def test_combined_decorators(self):
        """
        Combining decorators should register a command with arguments and options
        """
        application = Application()

        @application.command('decorated_foo', description='Foo command')
        @application.argument('foo', description='Foo argument', required=True, is_list=True)
        @application.option('bar', 'b', description='Bar option', value_required=True, is_list=True)
        def decorated_foo_code(i, o):
            """Foo Description"""
            o.writeln('called')

        self.assertTrue(application.has('decorated_foo'))

        command = application.get('decorated_foo')
        self.assertEqual(command._code, decorated_foo_code)
        self.assertEqual(command.get_description(), 'Foo command')
        self.assertTrue('decorated_foo_code' in command.get_aliases())

        argument = command.get_definition().get_argument('foo')
        self.assertEqual('Foo argument', argument.get_description())
        self.assertTrue(argument.is_required())
        self.assertTrue(argument.is_list())

        option = command.get_definition().get_option('bar')
        self.assertEqual('b', option.get_shortcut())
        self.assertEqual('Bar option', option.get_description())
        self.assertTrue(option.is_value_required())
        self.assertTrue(option.is_list())
示例#4
0
    def test_combined_decorators(self):
        """
        Combining decorators should register a command with arguments and options
        """
        application = Application()

        @application.command("decorated_foo", description="Foo command")
        @application.argument("foo", description="Foo argument", required=True, is_list=True)
        @application.option("bar", "b", description="Bar option", value_required=True, is_list=True)
        def decorated_foo_code(i, o):
            """Foo Description"""
            o.writeln("called")

        self.assertTrue(application.has("decorated_foo"))

        command = application.get("decorated_foo")
        self.assertEqual(command._code, decorated_foo_code)
        self.assertEqual(command.get_description(), "Foo command")
        self.assertTrue("decorated_foo_code" in command.get_aliases())

        argument = command.get_definition().get_argument("foo")
        self.assertEqual("Foo argument", argument.get_description())
        self.assertTrue(argument.is_required())
        self.assertTrue(argument.is_list())

        option = command.get_definition().get_option("bar")
        self.assertEqual("b", option.get_shortcut())
        self.assertEqual("Bar option", option.get_description())
        self.assertTrue(option.is_value_required())
        self.assertTrue(option.is_list())
示例#5
0
    def test_has_get(self):
        """
        Application.has() and Application.get() should determine and get commands
        """
        application = Application()

        self.assertTrue(application.has("list"), msg=".has() returns true if a command is registered")
        self.assertFalse(application.has("afoobar"), msg=".has() returns false if a command is not registered")

        foo = FooCommand()
        application.add(foo)

        self.assertTrue(application.has("afoobar"), msg=".has() returns true if an alias is registered")
        self.assertEqual(foo, application.get("foo:bar"), msg=".get() returns a command by name")
        self.assertEqual(foo, application.get("afoobar"), msg=".get() returns a command by alias")

        application = Application()
        application.add(foo)
        # Simulate help
        application._want_helps = True
        self.assertTrue(
            isinstance(application.get("foo:bar"), HelpCommand),
            msg=".get() returns the help command if --help is provided as the input",
        )
示例#6
0
    def test_command_decorator(self):
        """
        @Application.command decorator should register a command
        """
        application = Application()

        @application.command('decorated_foo', description='Foo')
        def decorated_foo_code(i, o):
            o.writeln('called')

        self.assertTrue(application.has('decorated_foo'))

        command = application.get('decorated_foo')
        self.assertEqual(command._code, decorated_foo_code)
        self.assertEqual(command.get_description(), 'Foo')
        self.assertTrue('decorated_foo_code' in command.get_aliases())
示例#7
0
    def test_command_decorator(self):
        """
        @Application.command decorator should register a command
        """
        application = Application()

        @application.command("decorated_foo", description="Foo")
        def decorated_foo_code(i, o):
            o.writeln("called")

        self.assertTrue(application.has("decorated_foo"))

        command = application.get("decorated_foo")
        self.assertEqual(command._code, decorated_foo_code)
        self.assertEqual(command.get_description(), "Foo")
        self.assertTrue("decorated_foo_code" in command.get_aliases())
示例#8
0
    def test_argument_decorator(self):
        """
        @Application.argument decorator should register a command with a specific argument
        """
        application = Application()

        @application.argument('foo', description='Foo', required=True, is_list=True)
        def decorated_foo_code(i, o):
            """Foo Description"""
            o.writeln('called')

        self.assertTrue(application.has('decorated_foo_code'))

        command = application.get('decorated_foo_code')
        self.assertEqual(command._code, decorated_foo_code)
        self.assertEqual(command.get_description(), 'Foo Description')

        argument = command.get_definition().get_argument('foo')
        self.assertEqual('Foo', argument.get_description())
        self.assertTrue(argument.is_required())
        self.assertTrue(argument.is_list())
示例#9
0
    def test_argument_decorator(self):
        """
        @Application.argument decorator should register a command with a specific argument
        """
        application = Application()

        @application.argument("foo", description="Foo", required=True, is_list=True)
        def decorated_foo_code(i, o):
            """Foo Description"""
            o.writeln("called")

        self.assertTrue(application.has("decorated_foo_code"))

        command = application.get("decorated_foo_code")
        self.assertEqual(command._code, decorated_foo_code)
        self.assertEqual(command.get_description(), "Foo Description")

        argument = command.get_definition().get_argument("foo")
        self.assertEqual("Foo", argument.get_description())
        self.assertTrue(argument.is_required())
        self.assertTrue(argument.is_list())
示例#10
0
    def test_option_decorator(self):
        """
        @Application.option decorator should register a command with a specific option
        """
        application = Application()

        @application.option('foo', 'f', description='Foo', value_required=True, is_list=True)
        def decorated_foo_code(i, o):
            """Foo Description"""
            o.writeln('called')

        self.assertTrue(application.has('decorated_foo_code'))

        command = application.get('decorated_foo_code')
        self.assertEqual(command._code, decorated_foo_code)
        self.assertEqual(command.get_description(), 'Foo Description')

        option = command.get_definition().get_option('foo')
        self.assertEqual('f', option.get_shortcut())
        self.assertEqual('Foo', option.get_description())
        self.assertTrue(option.is_value_required())
        self.assertTrue(option.is_list())
示例#11
0
    def test_option_decorator(self):
        """
        @Application.option decorator should register a command with a specific option
        """
        application = Application()

        @application.option("foo", "f", description="Foo", value_required=True, is_list=True)
        def decorated_foo_code(i, o):
            """Foo Description"""
            o.writeln("called")

        self.assertTrue(application.has("decorated_foo_code"))

        command = application.get("decorated_foo_code")
        self.assertEqual(command._code, decorated_foo_code)
        self.assertEqual(command.get_description(), "Foo Description")

        option = command.get_definition().get_option("foo")
        self.assertEqual("f", option.get_shortcut())
        self.assertEqual("Foo", option.get_description())
        self.assertTrue(option.is_value_required())
        self.assertTrue(option.is_list())