def test_program_config_local_config_raise(pack1_config0, merge, raise_on_error): pack1 = __import__("pack1") reload(pack1) program_config = ProgramConfig() program_config.parse(pack1) assert pack1.get_beta() == 5 assert pack1.mod0.get_opt1() == 10 program_config.configure(pack1_config0) assert pack1.get_beta() == 100 assert pack1.mod0.get_opt1() == 666 pack1_config1 = pack1_config0.copy() pack1_config1['pack1']['mod0']['opt0'] = 123 if raise_on_error: with pytest.raises(InvalidTypeError) as exc_info: with program_config.local_config(pack1_config1, merge=merge, raise_on_error=raise_on_error) as (local_config, validation_result): pass else: with program_config.local_config(pack1_config1, merge=merge, raise_on_error=raise_on_error) as (local_config, validation_result): assert isinstance(local_config, Config) assert isinstance(validation_result, Validation) assert validation_result assert 'pack1' in validation_result assert 'mod0' in validation_result['pack1'] assert 'opt0' in validation_result['pack1']['mod0'] assert pack1.get_beta() == 100 assert pack1.mod0.get_opt1() == 666
def test_program_config_package_pack0_fqname0(pack0_config0, pack0_fqname0): pack0 = __import__("pack0") reload(pack0) program_config = ProgramConfig() print("comp0:", pack0_fqname0['comp0']) print("comp1:", pack0_fqname0['comp1']) program_config.parse(pack0.comp0, fqname=pack0_fqname0['comp0']) program_config.parse(pack0.comp1, fqname=pack0_fqname0['comp1']) print("schema:") program_config.schema.dump() print("config:") pack0_config0.dump() program_config.configure(pack0_config0) assert not pack0.CONF.configured() assert pack0.comp0.CONF.configured() assert pack0.comp1.CONF.configured() assert not pack0.comp2.mod0.CONF.configured() assert pack0.comp0.get_opt0() == 20 assert pack0.comp0.get_opt1() == 30 assert pack0.comp0.get_opt2() == False assert pack0.comp1.get_opt0() == 555555 assert pack0.comp1.get_opt2() == True assert pack0.comp1.mod0.get_opt0() == "abc" assert pack0.comp1.mod1.get_opt0() == 2003.5 assert pack0.comp1.mod2.get_opt0() == 3003.5
def test_module_config_local_config_None(pack1_config0, merge): pack1 = __import__("pack1") reload(pack1) program_config = ProgramConfig() program_config.parse(pack1) assert pack1.get_alpha() == True assert pack1.mod0.get_opt1() == 10 program_config.configure(pack1_config0) assert pack1.get_alpha() == False assert pack1.mod0.get_opt0() == "xyz" assert pack1.mod0.get_opt1() == 666 with pack1.mod0.CONF.local_config(merge=merge) as (local_config, validation_result): assert isinstance(local_config, ConfigSection) assert isinstance(validation_result, ValidationSection) assert not validation_result if merge: opt0_value = "xyz" opt1_value = 666 else: opt0_value = "abracadabra" opt1_value = 10 assert local_config['opt0'] == opt0_value assert local_config['opt1'] == opt1_value assert pack1.mod0.get_opt0() == opt0_value assert pack1.mod0.get_opt1() == opt1_value assert pack1.get_alpha() == False assert pack1.mod0.get_opt0() == "xyz" assert pack1.mod0.get_opt1() == 666
def test_program_config_package_isolation_3(pack1_config0): pack1 = __import__("pack1") reload(pack1) assert not pack1.mod0.CONF.configured() assert not pack1.mod1.CONF.configured() program_config = ProgramConfig(pack1) program_config.configure(pack1_config0) assert pack1.CONF.configured() assert pack1.mod0.CONF.configured() assert pack1.mod1.CONF.configured()
def test_program_config_package_CONF(pack0_config0): pack0 = __import__("pack0") reload(pack0) assert not pack0.CONF.configured() program_config = ProgramConfig(pack0) program_config.configure(pack0_config0) conf = pack0.CONF for key, val in conf.items(): print(key, val) print(len(conf)) conf.config.dump()
def test_program_config_manual_configure_default(): pack0 = __import__("pack0") reload(pack0) assert not pack0.CONF.configured() program_config = ProgramConfig(pack0.comp1.mod0, pack0.comp1.mod1) # print("=== schema:") # program_config.schema.dump() program_config.configure() assert pack0.comp1.mod0.get_opt0() == "abracadabra" assert pack0.comp1.mod0.get_opt1() == 10 assert pack0.comp1.mod1.get_opt0() == 3.5
def test_program_config_package_isolation_2(pack1_config0): pack1 = __import__("pack1") reload(pack1) assert not pack1.mod0.CONF.configured() assert not pack1.mod1.CONF.configured() program_config = ProgramConfig(pack1.mod0, pack1.mod1) config = pack1_config0["pack1"]["mod0"].copy() config.update(pack1_config0["pack1"]["mod1"]) config.dump() program_config.configure(config) assert not pack1.CONF.configured() assert pack1.mod0.CONF.configured() assert pack1.mod1.CONF.configured()
def test_program_config_manual_configure(mod_config0): pack0 = __import__("pack0") reload(pack0) assert not pack0.CONF.configured() program_config = ProgramConfig(pack0.comp1.mod0, pack0.comp1.mod1) print("=== schema:") program_config.schema.dump() print("=== config:") mod_config0.dump() program_config.configure(mod_config0) assert pack0.comp1.mod0.get_opt0() == "abc" assert pack0.comp1.mod0.get_opt1() == 10 assert pack0.comp1.mod1.get_opt0() == 5.2
def test_program_config_local_config(pack1_config0, merge): pack1 = __import__("pack1") reload(pack1) program_config = ProgramConfig() program_config.parse(pack1) assert pack1.get_beta() == 5 assert pack1.mod0.get_opt0() == "abracadabra" assert pack1.mod0.get_opt1() == 10 assert pack1.mod1.get_opt0() == 3.5 program_config.configure(pack1_config0) pack1_config1 = pack1_config0.copy() assert pack1.get_beta() == 100 assert pack1.mod0.get_opt0() == "xyz" assert pack1.mod0.get_opt1() == 666 assert pack1.mod1.get_opt0() == 6.66 # [pack1] # alpha = False # beta = 100 # [mod0] # opt0 = "xyz" # opt1 = 666 # [mod1] # opt0 = 6.66 pack1_config1 = Config.from_string("""\ [pack1] [mod0] opt0 = "1xyz" opt1 = 1666 [mod1] opt0 = 16.66 """, fmt="zirkon") with program_config.local_config(pack1_config1, merge=merge) as (local_config, validation_result): assert isinstance(local_config, Config) assert isinstance(validation_result, Validation) assert not validation_result print("=== local_config:") local_config.dump() if merge: beta_value = 100 else: beta_value = 5 assert pack1.get_beta() == beta_value assert pack1.mod0.get_opt0() == "1xyz" assert pack1.mod0.get_opt1() == 1666 assert pack1.mod1.get_opt0() == 16.66 assert pack1.get_beta() == 100 assert pack1.mod0.get_opt0() == "xyz" assert pack1.mod0.get_opt1() == 666 assert pack1.mod1.get_opt0() == 6.66
def test_program_config_local_config_None(pack1_config0, merge): pack1 = __import__("pack1") reload(pack1) program_config = ProgramConfig() program_config.parse(pack1) assert pack1.get_beta() == 5 assert pack1.mod0.get_opt1() == 10 program_config.configure(pack1_config0) assert pack1.get_beta() == 100 assert pack1.mod0.get_opt1() == 666 with program_config.local_config(None, merge=merge) as (local_config, validation_result): if merge: assert pack1.get_beta() == 100 assert pack1.mod0.get_opt1() == 666 else: assert pack1.get_beta() == 5 assert pack1.mod0.get_opt1() == 10 assert pack1.get_beta() == 100 assert pack1.mod0.get_opt1() == 666
def test_module_config_nested_default(): pack7 = __import__("pack7") reload(pack7) program_config = ProgramConfig() program_config.parse(pack7) schema = program_config.schema conf = pack7.CONF assert len(conf['filesystems']) == 0 config = Config.from_string("""\ [pack7] [filesystems] [home] path = "/home/user" max_size_gb = 1.2 [files] source = "x.py" data = "x.dat" [work] path = "/tmp/user" [input] path = "/db/user" [files] input1 = "x1.dat" input2 = "x2.dat" input3 = "x3.dat" """) program_config.configure(config) # conf.config.dump() assert 'home' in conf['filesystems'] assert conf['filesystems']['home']['max_size_gb'] == 1.2 assert 'source' in conf['filesystems']['home']['files'] assert 'data' in conf['filesystems']['home']['files'] assert 'work' in conf['filesystems'] assert conf['filesystems']['work']['max_size_gb'] == 1.0 assert len(conf['filesystems']['work']['files']) == 0 assert 'input' in conf['filesystems'] assert 'input1' in conf['filesystems']['input']['files'] assert 'input2' in conf['filesystems']['input']['files'] assert 'input3' in conf['filesystems']['input']['files']