示例#1
0
def test_add_common_arguments_subparser():
    """Assert function adds the multiple options on a subparser.

    The expected options are ``-c``/``--config`` and ``--config-dir``.
    """
    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(dest='action')
    sub = subparsers.add_parser('sub')
    add_common_arguments(sub)

    options = parser.parse_args(['sub'])
    assert hasattr(options, 'config')
    assert hasattr(options, 'configdir')
    assert options.config == 'default'
    assert options.configdir == config.DEFAULT_HOMEDIR

    options = parser.parse_args(['sub', '-c', 'test-short'])
    assert options.config == 'test-short'

    options = parser.parse_args(['sub', '--config', 'test-long'])
    assert options.config == 'test-long'

    options = parser.parse_args(['sub', '--config-dir', 'test-long'])
    assert options.configdir == 'test-long'

    options = parser.parse_args(
        ['sub', '-c', 'test-short', '--config-dir', 'test-long-dir'])
    assert options.config == 'test-short'
    assert options.configdir == 'test-long-dir'

    options = parser.parse_args(
        ['sub', '--config', 'test-long', '--config-dir', 'test-long-dir'])
    assert options.config == 'test-long'
    assert options.configdir == 'test-long-dir'
示例#2
0
文件: run_script.py 项目: hekel/sopel
def build_parser():
    """Build an ``argparse.ArgumentParser`` for the bot"""
    parser = argparse.ArgumentParser(description='Sopel IRC Bot',
                                     usage='%(prog)s [options]')
    utils.add_common_arguments(parser)
    parser.add_argument("-d", '--fork', action="store_true",
                        dest="daemonize", help="Daemonize Sopel")
    parser.add_argument("-q", '--quit', action="store_true", dest="quit",
                        help="Gracefully quit Sopel")
    parser.add_argument("-k", '--kill', action="store_true", dest="kill",
                        help="Kill Sopel")
    parser.add_argument("-r", '--restart', action="store_true", dest="restart",
                        help="Restart Sopel")
    parser.add_argument("-l", '--list', action="store_true",
                        dest="list_configs",
                        help="List all config files found")
    parser.add_argument("-m", '--migrate', action="store_true",
                        dest="migrate_configs",
                        help="Migrate config files to the new format")
    parser.add_argument('--quiet', action="store_true", dest="quiet",
                        help="Suppress all output")
    parser.add_argument('-w', '--configure-all', action='store_true',
                        dest='wizard', help='Run the configuration wizard.')
    parser.add_argument('--configure-modules', action='store_true',
                        dest='mod_wizard', help=(
                            'Run the configuration wizard, but only for the '
                            'module configuration options.'))
    parser.add_argument('-v', '--version', action="store_true",
                        dest="version", help="Show version number and exit")
    return parser
示例#3
0
def test_add_common_arguments():
    """Assert function adds the ``-c``/``--config`` and ``--configdir`` options
    """
    parser = argparse.ArgumentParser()
    add_common_arguments(parser)

    options = parser.parse_args([])
    assert hasattr(options, 'config')
    assert hasattr(options, 'configdir')
    assert options.config == 'default'
    assert options.configdir == config.DEFAULT_HOMEDIR

    options = parser.parse_args(['-c', 'test-short'])
    assert options.config == 'test-short'

    options = parser.parse_args(['--config', 'test-long'])
    assert options.config == 'test-long'

    options = parser.parse_args(['--config-dir', 'test-long'])
    assert options.configdir == 'test-long'

    options = parser.parse_args(
        ['-c', 'test-short', '--config-dir', 'test-long-dir'])
    assert options.config == 'test-short'
    assert options.configdir == 'test-long-dir'

    options = parser.parse_args(
        ['--config', 'test-long', '--config-dir', 'test-long-dir'])
    assert options.config == 'test-long'
    assert options.configdir == 'test-long-dir'
示例#4
0
def test_load_settings_default_not_found(config_dir):
    parser = argparse.ArgumentParser()
    add_common_arguments(parser)

    options = parser.parse_args(['--config-dir', config_dir.strpath])

    with pytest.raises(config.ConfigurationNotFound):
        load_settings(options)
示例#5
0
def test_load_settings_default(config_dir):
    config_dir.join('default.cfg').write(TMP_CONFIG)
    parser = argparse.ArgumentParser()
    add_common_arguments(parser)

    options = parser.parse_args(['--config-dir', config_dir.strpath])

    settings = load_settings(options)
    assert isinstance(settings, config.Config)
def test_load_settings_invalid(config_dir):
    parser = argparse.ArgumentParser()
    add_common_arguments(parser)

    options = parser.parse_args([
        '--config-dir', config_dir.strpath,
        '-c', 'config.cfg',
    ])

    with pytest.raises(ValueError):  # no [core] section
        load_settings(options)
def test_load_settings(config_dir):
    config_dir.join('config.cfg').write(TMP_CONFIG)
    parser = argparse.ArgumentParser()
    add_common_arguments(parser)

    options = parser.parse_args([
        '--config-dir', config_dir.strpath,
        '-c', 'config.cfg',
    ])

    settings = load_settings(options)
    assert isinstance(settings, config.Config)
    assert settings.basename == 'config'
示例#8
0
def test_add_common_arguments():
    """Assert function adds the -c/--config option."""
    parser = argparse.ArgumentParser()
    add_common_arguments(parser)

    options = parser.parse_args([])
    assert hasattr(options, 'config')
    assert options.config is None

    options = parser.parse_args(['-c', 'test-short'])
    assert options.config == 'test-short'

    options = parser.parse_args(['--config', 'test-long'])
    assert options.config == 'test-long'
示例#9
0
def test_add_common_arguments():
    """Assert function adds the -c/--config option."""
    parser = argparse.ArgumentParser()
    add_common_arguments(parser)

    options = parser.parse_args([])
    assert hasattr(options, 'config')
    assert options.config is None

    options = parser.parse_args(['-c', 'test-short'])
    assert options.config == 'test-short'

    options = parser.parse_args(['--config', 'test-long'])
    assert options.config == 'test-long'
示例#10
0
def test_load_settings_default_env_var(monkeypatch, config_dir, env_dir):
    monkeypatch.setenv('SOPEL_CONFIG', 'fromenv')
    monkeypatch.setenv('SOPEL_CONFIG_DIR', env_dir.strpath)

    config_dir.join('config.cfg').write(TMP_CONFIG)
    env_dir.join('fromenv.cfg').write(TMP_CONFIG)
    parser = argparse.ArgumentParser()
    add_common_arguments(parser)

    options = parser.parse_args([])

    settings = load_settings(options)
    assert isinstance(settings, config.Config)
    assert settings.basename == 'fromenv'
    assert os.path.dirname(settings.filename) == env_dir.strpath
示例#11
0
def test_add_common_arguments_subparser():
    """Assert function adds the -c/--config option on a subparser."""
    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(dest='action')
    sub = subparsers.add_parser('sub')
    add_common_arguments(sub)

    options = parser.parse_args(['sub'])
    assert hasattr(options, 'config')
    assert options.config is None

    options = parser.parse_args(['sub', '-c', 'test-short'])
    assert options.config == 'test-short'

    options = parser.parse_args(['sub', '--config', 'test-long'])
    assert options.config == 'test-long'
示例#12
0
def test_add_common_arguments_subparser():
    """Assert function adds the -c/--config option on a subparser."""
    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(dest='action')
    sub = subparsers.add_parser('sub')
    add_common_arguments(sub)

    options = parser.parse_args(['sub'])
    assert hasattr(options, 'config')
    assert options.config is None

    options = parser.parse_args(['sub', '-c', 'test-short'])
    assert options.config == 'test-short'

    options = parser.parse_args(['sub', '--config', 'test-long'])
    assert options.config == 'test-long'
def test_load_settings_arg_priority_over_env(monkeypatch, config_dir, env_dir):
    monkeypatch.setenv('SOPEL_CONFIG', 'fromenv')
    monkeypatch.setenv('SOPEL_CONFIG_DIR', env_dir.strpath)

    config_dir.join('fromenv.cfg').write(TMP_CONFIG)
    config_dir.join('fromarg.cfg').write(TMP_CONFIG)
    parser = argparse.ArgumentParser()
    add_common_arguments(parser)

    options = parser.parse_args([
        '--config-dir', config_dir.strpath,
        '-c', 'fromarg',
    ])

    settings = load_settings(options)
    assert isinstance(settings, config.Config)
    assert settings.basename == 'fromarg'
    assert os.path.dirname(settings.filename) == config_dir.strpath