def test_program_config_load_config_reload(): pack1 = __import__("pack1") reload(pack1) program_config = parse_modules(pack1) cfg = Config.from_string("""\ [pack1] [mod0] opt1 = 20 beta = 55 """) program_config.configure(cfg) config = program_config.config program_config2 = parse_modules(pack1) config2 = program_config2.config assert config is not config2 assert config == config2
def test_program_config_unique_module_config(): pack2 = __import__("pack2") reload(pack2) program_config = parse_modules(pack2.mod1, fqname="packX", override_function=override_merge) schema = program_config.schema assert 'opt10' in schema['packX']['mod1'] assert 'opt11' in schema['packX']['mod1']
def test_program_config_root(): pack10_comp1 = __import__("pack10.comp1", fromlist=('pack10', )) reload(pack10_comp1) print(pack10_comp1) program_config = parse_modules(pack10_comp1) assert 'comp1' in program_config.schema assert 'comp0' not in program_config.schema program_config.schema.dump()
def test_program_config_PATH_noconfig(): pack9 = __import__("pack9") reload(pack9) program_config = parse_modules(pack9) dirname = os.getcwd() basename = "" assert pack9.get_url() == "sqlite://{}/.{}.db".format(dirname, basename) assert pack9.comp0.get_fn0() == "{}/fn0.config".format(dirname) assert pack9.comp0.get_fn1() == "_fn1.config"
def test_program_config_duplication_merge(): pack2 = __import__("pack2") reload(pack2) program_config = parse_modules(pack2.mod1, override_function=override_merge) assert pack2.mod1.CONF_A.schema == pack2.mod1.CONF_B.schema assert 'opt10' in pack2.mod1.CONF_A.schema assert 'opt11' in pack2.mod1.CONF_A.schema assert pack2.mod1.get_opt10() == 3 assert pack2.mod1.get_opt11() == 1.5
def test_program_config_module_isolation(): pack4 = __import__("pack4") reload(pack4) program_config = parse_modules(pack4) schema = program_config.schema schema.dump() assert 'pack4' in schema assert 'comp1' in schema["pack4"] assert 'opt10' in schema["pack4"]["comp1"] assert 'comp2' in schema["pack4"] assert 'opt20' in schema["pack4"]["comp2"]
def test_program_config_load_config_noconfigure(): pack1 = __import__("pack1") reload(pack1) program_config = parse_modules(pack1) config = program_config.config config.dump() config.defaults.dump() assert config["pack1"]["alpha"] == True assert config["pack1"]["beta"] == 5 assert config["pack1"]["mod0"]["opt0"] == "abracadabra" assert config["pack1"]["mod0"]["opt1"] == 10 assert config["pack1"]["mod1"]["opt0"] == 3.5
def test_program_config_PATH_config_argparser(tmpdir): pack9 = __import__("pack9") reload(pack9) program_config = parse_modules(pack9) filename = tmpdir.join("PATH.config").strpath with open(filename, "w") as f_out: f_out.write("""\ """) config, validation_result, namespace = program_config.parse_args(["--config", filename]) dirname, basename = os.path.split(filename) assert pack9.get_url() == "sqlite://{}/.{}.db".format(dirname, basename) assert pack9.comp0.get_fn0() == "{}/fn0.config".format(dirname) assert pack9.comp0.get_fn1() == "{}_fn1.config".format(filename)
def test_program_config_unique_module_config(): pack2 = __import__("pack2") reload(pack2) program_config = parse_modules(pack2, override_function=override_merge) program_config.schema.dump() schema = program_config.schema assert 'opt0' in schema['pack2'] assert 'opt00' in schema['pack2']['mod0'] assert 'opt00' not in schema['pack2'] assert 'opt10' in schema['pack2']['mod1'] assert 'opt10' not in schema['pack2'] assert 'opt11' in schema['pack2']['mod1'] assert 'opt11' not in schema['pack2']
def test_program_config_load_schema(): pack1 = __import__("pack1") reload(pack1) program_config = parse_modules(pack1) schema = program_config.schema schema.dump() assert 'pack1' in schema assert 'alpha' in schema["pack1"] assert 'beta' in schema["pack1"] assert 'mod0' in schema["pack1"] assert 'opt0' in schema["pack1"]["mod0"] assert 'opt1' in schema["pack1"]["mod0"] assert 'mod1' in schema["pack1"] assert 'opt0' in schema["pack1"]["mod1"]
def test_program_config_load_config_configure(): pack1 = __import__("pack1") reload(pack1) program_config = parse_modules(pack1) cfg = Config.from_string("""\ [pack1] [mod0] opt1 = 20 beta = 55 """) program_config.configure(cfg) config = program_config.config config.dump() assert config["pack1"]["alpha"] == True assert config["pack1"]["beta"] == 55 assert config["pack1"]["mod0"]["opt0"] == "abracadabra" assert config["pack1"]["mod0"]["opt1"] == 20
def test_program_config_PATH_config(tmpdir): pack9 = __import__("pack9") reload(pack9) program_config = parse_modules(pack9) filename = tmpdir.join("PATH.config").strpath with open(filename, "w") as f_out: f_out.write("""\ """) config = Config.from_file(filename, schema=program_config.schema) # print(config.as_dict(defaults=True, evaluate=False)) # config.dump(evaluate=False, defaults=True) # print(config.as_dict(defaults=True, evaluate=True)) # config.dump(evaluate=True, defaults=True) program_config.configure(config) dirname, basename = os.path.split(filename) assert pack9.get_url() == "sqlite://{}/.{}.db".format(dirname, basename) assert pack9.comp0.get_fn0() == "{}/fn0.config".format(dirname) assert pack9.comp0.get_fn1() == "{}_fn1.config".format(filename)
def test_program_config_ROOT(tmpdir): pack1 = __import__("pack1", fromlist=('pack10', )) reload(pack1) print(pack1) program_config = parse_modules(pack1) cfile = tmpdir.join("pack1.config").strpath with open(cfile, "w") as f: f.write("""\ [pack1] alpha = True beta = 5 [mod0] opt0 = 'abracadabra' opt1 = ROOT["pack1"]["beta"] * 100 [mod1] opt0 = 3.5 """) program_config.parse_args(["--config", cfile]) assert pack1.mod0.get_opt1() == 500
def test_program_config_callback(): pack8 = __import__("pack8") reload(pack8) program_config = parse_modules(pack8) assert pack8.get_url() == "sqlite://" assert pack8.get_db() is not None assert pack8.get_db().url == pack8.get_url() assert pack8.comp0.get_size() == 0 assert pack8.comp0.get_lst() is not None assert len(pack8.comp0.get_lst()) == pack8.comp0.get_size() cfg = Config.from_string("""\ [pack8] url = "memory://" [comp0] size = 10 """) program_config.configure(cfg) assert pack8.get_url() == "memory://" assert pack8.get_db() is not None assert pack8.get_db().url == pack8.get_url() assert pack8.comp0.get_size() == 10 assert pack8.comp0.get_lst() is not None assert len(pack8.comp0.get_lst()) == pack8.comp0.get_size()
def test_program_config_parse_error(): with pytest.raises(TypeError): program_config = parse_modules(45)
def test_program_config_duplication_error(): pack2 = __import__("pack2") reload(pack2) with pytest.raises(ModuleConfigDuplicationError) as exc_info: program_config = parse_modules(pack2.mod1, override_function=override_error)