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'
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
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'
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)
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'
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'
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'
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
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_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