예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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()
예제 #5
0
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()
예제 #6
0
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
예제 #7
0
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()
예제 #8
0
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
예제 #9
0
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
예제 #10
0
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
예제 #11
0
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']