def test_guess_mult(): filepath = "/a/b{fmt}/{config_class}/xx.{fmt}-{config_class}" filetypes = list(guess(filepath)) filetypes_d = {filetype.filepath: filetype for filetype in filetypes} fmts = get_fmts() config_classes = get_config_classes() assert len(filetypes) == len(fmts) * len(config_classes) for config_class in config_classes: for fmt in fmts: fp = filepath.format(fmt=fmt, config_class=config_class.__name__.lower()) assert fp in filetypes_d #assert config_class == filetypes_d[fp].config_class #assert fmt == filetypes_d[fp].fmt #assert FileType(filepath=fp, fmt=fmt, config_class=config_class) == filetypes_d[fp] assert FileType(filepath=fp, fmt=fmt, config_class=config_class) in filetypes
def test_classify(tmpdir): config_classes = get_config_classes() fmts = get_fmts() ref_filetypes = {} rootnames = ('x', 'xy') for rootname in rootnames: for config_class in config_classes: config_class_name = get_config_class_name(config_class) for fmt in fmts: filename = standard_filepath(rootname=rootname, config=config_class_name, fmt=fmt) filepath = os.path.join(tmpdir.strpath, filename) with open(filepath, "w") as f_out: pass ref_filetype = FileType(filepath=filepath, config_class=config_class, fmt=fmt) ref_filetypes[filepath] = ref_filetype assert len(ref_filetypes) == len(rootnames) * len(config_classes) * len(fmts) for filetype in classify(tmpdir.strpath): assert filetype.filepath in ref_filetypes ref_filetype = ref_filetypes.pop(filetype.filepath) assert filetype == ref_filetype os.remove(filetype.filepath) assert len(ref_filetypes) == 0
def test_setup_fmts_None(): assert setup_fmts(None) == get_fmts()
try: set_default_fmt(fmt) lst = list(guess(filename)) assert len(lst) == 1 assert lst[0] == FileType(filepath=filename, fmt=fmt, config_class=config_class) finally: set_default_fmt(orig_fmt) def test_get_default_fmt(): assert get_default_fmt() == "zirkon" _tdata1 = [ ("/a/b.config", Config, "zirkon"), ] for _fmt in get_fmts(): _tdata1.append(("/a/b.{}".format(_fmt), Config, _fmt)) _tdata1.append(("/a/b.c-{}".format(_fmt), Config, _fmt)) _tdata1.append(("/a/b.{}-config".format(_fmt), Config, _fmt)) _tdata1.append(("/a/b.s-{}".format(_fmt), Schema, _fmt)) _tdata1.append(("/a/b.{}-schema".format(_fmt), Schema, _fmt)) _tdata1.append(("/a/b.v-{}".format(_fmt), Validation, _fmt)) _tdata1.append(("/a/b.{}-validation".format(_fmt), Validation, _fmt)) @pytest.fixture(params=_tdata1) def tdata1(request): return request.param def test_get_filetype(tdata1): filename, config_class, fmt = tdata1 assert get_filetype(filename) == FileType(filepath=filename, config_class=config_class, fmt=fmt)
filetype, obj = filetype_obj tmpfile = tmpdir.join("read", filetype.filepath).strpath filetype = filetype._replace(filepath=tmpfile) obj.to_file(filetype.filepath) obj2 = filetype.config_class() io_manager.read_obj(obj2, filetype) # print("obj:") # obj.dump() # print("obj2:") # obj2.dump() dct = dictutils.transform(obj, dict_class=dict, value_transform=str) dct2 = dictutils.transform(obj2, dict_class=dict, value_transform=str) assert dct == dct2 @pytest.fixture(params=[fmt for fmt in get_fmts() if fmt != "pickle"]) def fmt(request): return request.param @pytest.fixture(params=[True, False]) def yes_no(request): return request.param def test_IoManager_dump(io_manager, filetype_obj, tmpdir, fmt, yes_no): filetype, obj = filetype_obj if yes_no: print_function = io_manager.printer else: print_function = lambda *args, **kwargs: io_manager.printer(*args, **kwargs) io_manager.printer.stream.truncate(0) io_manager.dump_obj(obj, fmt=fmt, print_function=print_function)