# Path: cliff/app.py
# _SIGINT_EXIT = 130
# _SIGPIPE_EXIT = 141
#     NAME = os.path.splitext(os.path.basename(sys.argv[0]))[0]
#         NAME = os.path.split(os.path.dirname(sys.argv[0]))[-1]
#     LOG = logging.getLogger(NAME)
#     CONSOLE_MESSAGE_FORMAT = '%(message)s'
#     LOG_FILE_MESSAGE_FORMAT = \
#         '[%(asctime)s] %(levelname)-8s %(name)s %(message)s'
#     DEFAULT_VERBOSE_LEVEL = 1
#     DEFAULT_OUTPUT_ENCODING = 'utf-8'
# class App(object):
#     def __init__(self, description, version, command_manager,
#                  stdin=None, stdout=None, stderr=None,
#                  interactive_app_factory=None,
#                  deferred_help=False):
#     def _set_streams(self, stdin, stdout, stderr):
#     def build_option_parser(self, description, version,
#                             argparse_kwargs=None):
#     def configure_logging(self):
#     def print_help_if_requested(self):
#     def run(self, argv):
#     def initialize_app(self, argv):
#     def prepare_to_run_command(self, cmd):
#     def clean_up(self, cmd, result, err):
#     def interact(self):
#     def get_fuzzy_matches(self, cmd):
#     def run_subcommand(self, argv):
# 
# Path: cliff/commandmanager.py
# LOG = logging.getLogger(__name__)
# def _get_commands_by_partial_name(args, commands):
#     def __init__(self, name, command_class):
#     def load(self, require=False):
#     def __init__(self, namespace, convert_underscores=True):
#     def _load_commands(self):
#     def load_commands(self, namespace):
#     def __iter__(self):
#     def add_command(self, name, command_class):
#     def add_legacy_command(self, old_name, new_name):
#     def find_command(self, argv):
#     def _get_last_possible_command_index(self, argv):
#     def add_command_group(self, group=None):
#     def get_command_groups(self):
#     def get_command_names(self, group=None):
# class EntryPointWrapper(object):
# class CommandManager(object):
# 
# Path: cliff/help.py
# class HelpExit(SystemExit):
# class HelpAction(argparse.Action):
# class HelpCommand(command.Command):
#     def __call__(self, parser, namespace, values, option_string=None):
#             def dist_for_obj(obj):
#     def get_parser(self, prog_name):
#     def take_action(self, parsed_args):


import io
import os
import sys
from unittest import mock
from cliff import app as application
from cliff import commandmanager
from cliff import help
from cliff.tests import base
from cliff.tests import utils





class TestHelp(base.TestBase):

    def test_show_help_for_command(self):
        # FIXME(dhellmann): Are commands tied too closely to the app? Or
        # do commands know too much about apps by using them to get to the
        # command manager?
        stdout = io.StringIO()
        app = application.App('testing', '1',
                              utils.TestCommandManager(utils.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 help.HelpExit:
            pass
        self.assertEqual('TestParser', stdout.getvalue())

    def test_list_matching_commands(self):
        # FIXME(dhellmann): Are commands tied too closely to the app? Or
        # do commands know too much about apps by using them to get to the
        # command manager?
        stdout = io.StringIO()

# Path: cliff/app.py
# _SIGINT_EXIT = 130
# _SIGPIPE_EXIT = 141
#     NAME = os.path.splitext(os.path.basename(sys.argv[0]))[0]
#         NAME = os.path.split(os.path.dirname(sys.argv[0]))[-1]
#     LOG = logging.getLogger(NAME)
#     CONSOLE_MESSAGE_FORMAT = '%(message)s'
#     LOG_FILE_MESSAGE_FORMAT = \
#         '[%(asctime)s] %(levelname)-8s %(name)s %(message)s'
#     DEFAULT_VERBOSE_LEVEL = 1
#     DEFAULT_OUTPUT_ENCODING = 'utf-8'
# class App(object):
#     def __init__(self, description, version, command_manager,
#                  stdin=None, stdout=None, stderr=None,
#                  interactive_app_factory=None,
#                  deferred_help=False):
#     def _set_streams(self, stdin, stdout, stderr):
#     def build_option_parser(self, description, version,
#                             argparse_kwargs=None):
#     def configure_logging(self):
#     def print_help_if_requested(self):
#     def run(self, argv):
#     def initialize_app(self, argv):
#     def prepare_to_run_command(self, cmd):
#     def clean_up(self, cmd, result, err):
#     def interact(self):
#     def get_fuzzy_matches(self, cmd):
#     def run_subcommand(self, argv):
# 
# Path: cliff/commandmanager.py
# LOG = logging.getLogger(__name__)
# def _get_commands_by_partial_name(args, commands):
#     def __init__(self, name, command_class):
#     def load(self, require=False):
#     def __init__(self, namespace, convert_underscores=True):
#     def _load_commands(self):
#     def load_commands(self, namespace):
#     def __iter__(self):
#     def add_command(self, name, command_class):
#     def add_legacy_command(self, old_name, new_name):
#     def find_command(self, argv):
#     def _get_last_possible_command_index(self, argv):
#     def add_command_group(self, group=None):
#     def get_command_groups(self):
#     def get_command_names(self, group=None):
# class EntryPointWrapper(object):
# class CommandManager(object):
# 
# Path: cliff/help.py
# class HelpExit(SystemExit):
# class HelpAction(argparse.Action):
# class HelpCommand(command.Command):
#     def __call__(self, parser, namespace, values, option_string=None):
#             def dist_for_obj(obj):
#     def get_parser(self, prog_name):
#     def take_action(self, parsed_args):


# Path: cliff/tests/test_help.py
import io
import os
import sys
from unittest import mock
from cliff import app as application
from cliff import commandmanager
from cliff import help
from cliff.tests import base
from cliff.tests import utils






class TestHelp(base.TestBase):

    def test_show_help_for_command(self):
        # FIXME(dhellmann): Are commands tied too closely to the app? Or
        # do commands know too much about apps by using them to get to the
        # command manager?
        stdout = io.StringIO()
        app = application.App('testing', '1',
                              utils.TestCommandManager(utils.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 help.HelpExit:
            pass
        self.assertEqual('TestParser', stdout.getvalue())

    def test_list_matching_commands(self):
        # FIXME(dhellmann): Are commands tied too closely to the app? Or
        # do commands know too much about apps by using them to get to the
        # command manager?
        stdout = io.StringIO()

        app = application.App('testing', '1',