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']
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)