Exemple #1
0
def test_main_program_config_err_vfile(tmpdir):
    vfile = tmpdir.join("pack0.validation").strpath
    args = ["program", '-m', 'tests/pack0', '--config', '-V', vfile]
    log_stream, out_stream = run(args)
    validation = Validation.from_file(vfile)
    assert 'pack0' in validation
    assert 'max_delay' in validation['pack0']
Exemple #2
0
def test_main_read_write(files, i_name_protocol, o_name_protocol, s_name_protocol, v_name_protocol, defaults):
    i_name, i_protocol, i_hints = i_name_protocol
    o_name, o_protocol, o_hints = o_name_protocol
    s_name, s_protocol, s_hints = s_name_protocol
    v_name, v_protocol, v_hints = v_name_protocol

    if o_protocol is None:
        o_protocol = i_protocol
    with files.tmp(o_name), files.tmp(v_name):
        i_file_arg = files[i_name] + i_hints
        o_file_arg = files[o_name] + o_hints

        if o_name:
            assert not os.path.exists(files[o_name])
        if v_name:
            assert not os.path.exists(files[v_name])

        args = ["read", "-i", i_file_arg, "-o", o_file_arg]
        if s_name is not None:
            args.extend(["-s", s_name + s_hints])
            if v_name is not None:
                args.extend(["-V", v_name + v_hints])
        if defaults is not None:
            args.append("--defaults={!r}".format(defaults))
        log_stream, out_stream = run(args)

        if o_name:
            assert os.path.exists(files[o_name])

        config_args = {}
        if defaults is not None:
            config_args['defaults'] = defaults

        print("read in {}:{}".format(files[i_name], i_protocol))
        i_config = Config.from_file(files[i_name], protocol=i_protocol, **config_args)
        print("read out {}:{}".format(files[o_name], o_protocol))

        schema = None
        if s_name is not None:
            schema = Schema.from_file(files[s_name], protocol=s_protocol)
            validation = schema.validate(i_config)
            if v_name is not None:
                assert os.path.exists(v_name)
                v_data = Validation.from_file(files[v_name], protocol=v_protocol)
                print("===")
                validation.dump()
                print("===")
                v_data.dump()
                assert validation.to_string(protocol="zirkon") == v_data.to_string(protocol="zirkon")

        if o_name:
            o_config = Config.from_file(files[o_name], protocol=o_protocol, **config_args)
        else:
            o_config = Config.from_string(out_stream.getvalue(), protocol=o_protocol, **config_args)
        if schema:
            o_v_data = schema.validate(o_config)
            
        assert i_config == o_config
        out_x_json_path = files[o_name]
    assert not o_name in files
    assert not os.path.exists(out_x_json_path)