Ejemplo n.º 1
0
def test_help_commands_grouped_by_module(mocker):
    stdout = StringIO()

    def dist_assigner(obj):
        if obj.name in ['one', 'three word command']:
            return 'datakit-plugin-a',
        elif obj.name == 'two words':
            return 'datakit-plugin-b',
        else:
            return 'cliff'

    mocker.patch('datakit.help.dist_for_obj', side_effect=dist_assigner)
    from datakit.datakit_app import Datakit
    app = Datakit('testing',
                  '1',
                  TestCommandManager(TEST_NAMESPACE),
                  stdout=stdout)
    app.NAME = 'test'
    app.options = mock.Mock()
    app.options.debug = True
    help_cmd = help.HelpCommand(app, mock.Mock())
    parser = help_cmd.get_parser('test')
    parsed_args = parser.parse_args([])
    try:
        help_cmd.run(parsed_args)
    except SystemExit:
        pass
    help_text = stdout.getvalue()
    assert 'cliff' not in help_text
    assert re.search(
        "Commands:\n\s+complete.+?datakit-plugin-a.+?datakit-plugin-b",
        help_text, re.DOTALL)
Ejemplo n.º 2
0
def test_list_matching_commands_no_match():
    stdout = StringIO()
    app = application.App('testing',
                          '1',
                          TestCommandManager(TEST_NAMESPACE),
                          stdout=stdout)
    app.NAME = 'test'
    help_cmd = help.HelpCommand(app, mock.Mock())
    parser = help_cmd.get_parser('test')
    parsed_args = parser.parse_args(['z'])
    with pytest.raises(ValueError):
        help_cmd.run(parsed_args)
Ejemplo n.º 3
0
def test_show_help_for_command():
    stdout = StringIO()
    app = application.App('testing',
                          '1',
                          TestCommandManager(TEST_NAMESPACE),
                          stdout=stdout)
    app.NAME = 'test'
    help_cmd = help.HelpCommand(app, mock.Mock())
    parser = help_cmd.get_parser('test')
    parsed_args = parser.parse_args(['one'])
    try:
        help_cmd.run(parsed_args)
    except SystemExit:
        pass
    assert 'TestParser' == stdout.getvalue()
Ejemplo n.º 4
0
def test_list_matching_commands():
    stdout = StringIO()
    app = application.App('testing',
                          '1',
                          TestCommandManager(TEST_NAMESPACE),
                          stdout=stdout)
    app.NAME = 'test'
    help_cmd = help.HelpCommand(app, mock.Mock())
    parser = help_cmd.get_parser('test')
    parsed_args = parser.parse_args(['t'])
    try:
        help_cmd.run(parsed_args)
    except SystemExit:
        pass
    help_output = stdout.getvalue()
    assert 'Command "t" matches:' in help_output
    assert 'three word command\n  two words\n' in help_output
Ejemplo n.º 5
0
def test_show_help_for_help():
    stdout = StringIO()
    app = application.App('testing',
                          '1',
                          TestCommandManager(TEST_NAMESPACE),
                          stdout=stdout)
    app.NAME = 'test'
    app.options = mock.Mock()
    help_cmd = help.HelpCommand(app, mock.Mock())
    parser = help_cmd.get_parser('test')
    parsed_args = parser.parse_args([])
    try:
        help_cmd.run(parsed_args)
    except SystemExit:
        pass
    help_text = stdout.getvalue()
    basecommand = os.path.split(sys.argv[0])[1]
    assert 'usage: %s [--version]' % basecommand in help_text
    assert 'optional arguments:\n  --version' in help_text
    expected = ('  one            Test command.\n'
                '  three word command  Test command.\n')
    assert expected in help_text
Ejemplo n.º 6
0
def test_show_help_print_exc_with_ep_load_fail(mocker):
    stdout = StringIO()
    mocker.patch('cliff.commandmanager.EntryPointWrapper.load',
                 side_effect=Exception('Could not load EntryPoint'))
    app = application.App('testing',
                          '1',
                          TestCommandManager(TEST_NAMESPACE),
                          stdout=stdout)
    app.NAME = 'test'
    app.options = mock.Mock()
    app.options.debug = True
    help_cmd = help.HelpCommand(app, mock.Mock())
    parser = help_cmd.get_parser('test')
    parsed_args = parser.parse_args([])
    try:
        help_cmd.run(parsed_args)
    except SystemExit:
        pass
    help_output = stdout.getvalue()
    assert 'Commands:' in help_output
    assert 'Could not load' in help_output
    assert 'Exception: Could not load EntryPoint' in help_output