def test_dictinary_configuration_fail(runner): def main(config): assert config.a_b_c == "abc_default" dict_options = { "a": { "b": { "c": "fail", }, }, } with pytest.raises(ValueError): build_entrypoint(main, build_options_from_dict(dict_options))
def test_defaults(runner): def main(config): assert config.a_b_c == "abc-default" assert config.b_c_d == 666 assert config.c_d_e == () assert config.configuration_file is None assert len(config) == 4 ep = build_entrypoint(main, options) runner.invoke(ep, [], catch_exceptions=False)
def test_dictinary_configuration(runner): def main(config): assert config.a_b_c == "abc_default" dict_options = { "a": { "b": { "c": Option(default="abc-default"), }, }, } ep = build_entrypoint(main, build_options_from_dict(dict_options)) runner.invoke(ep)
def test_config_duplicate(runner, tmp_path): def main(config): assert config.a_b_c == "abc-config" assert config.b_c_d == 667 config_path = tmp_path / "config.yml" ep = build_entrypoint(main, options) config_path.write_text( dedent("""\ a: b: c: abc-config a-b-c: fail """)) with pytest.raises(ValueError): runner.invoke(ep, [str(config_path)], catch_exceptions=False)
def test_config(runner, tmp_path): def main(config): assert config.a_b_c == "abc-config" assert config.b_c_d == 667 assert config.c_d_e == ("a", "b") assert config.configuration_file == str(config_path) config_path = tmp_path / "config.yml" ep = build_entrypoint(main, options) config_path.write_text( dedent("""\ a: b: c: abc-config b-c: d: "667" c-d-e: - a - b """)) runner.invoke(ep, [str(config_path)], catch_exceptions=False)
_ = Patray(config) sys.exit(app.exec_()) style = Choice(["combo", "radio"]) options = [ option("--profile-enabled", default=True, type=bool), option("--profile-style", default="combo", type=style), option("--port-enabled", default=True, type=bool), option("--port-style", default="radio", type=style), option("--port-maximum-volume", default=100, type=int), option("--port-hide-by-mask", multiple=True), option("--log-level", default="INFO"), option("--icon-path", default=None, required=False, type=Path(exists=True, dir_okay=False, readable=True, resolve_path=True)), option("--icon-color", default="#fff", help="Use `random` value for random color on each click"), version_option(version, message="%(version)s"), ] entrypoint = build_entrypoint(main, options, auto_envvar_prefix="PATRAY", show_default=True) entrypoint(prog_name="patray")