def test_open_mode(setup_teardown_folder): # must exist for mode in ["r+", "r"]: with pytest.raises(IOError): f = File(setup_teardown_folder[1], mode) # create if not exist for mode in ["a", "w", "w-"]: remove(setup_teardown_folder[1]) f = File(setup_teardown_folder[1], mode) f.require_dataset('dset', np.arange(10)) f.attrs['can_overwrite'] = 42 f.attrs['can_overwrite'] = 14 f.require_group('mygroup') remove(setup_teardown_folder[1]) f = File(setup_teardown_folder[1], 'w') f.close() # dummy close # read write if exist f = File(setup_teardown_folder[1], "r+") f.require_group('mygroup') f.require_dataset('dset', np.arange(10)) f.attrs['can_overwrite'] = 42 f.attrs['can_overwrite'] = 14 # read only, can not write f = File(setup_teardown_folder[1], 'r') with pytest.raises(IOError): f.require_dataset('dset', np.arange(10)) f.attrs['can_not_write'] = 42 f.create_group('mygroup')
def test_validate_name_simple(setup_teardown_folder): """Test naming rule simple.""" f = File(setup_teardown_folder[1], name_validation=fv.thorough) grp = f.create_group("test") grp.create_group("abcdefghijklmnopqrstuvwxyz1234567890_-") with pytest.raises(NameError): grp.create_group("()") f.close() remove(setup_teardown_folder[1]) f = File(setup_teardown_folder[1], name_validation=fv.thorough) grp = f.create_group("test") grp.create_group("aa") with pytest.raises(RuntimeError): grp.create_group("AA")
def test_file_init(setup_teardown_folder): no_exdir = setup_teardown_folder[0] / "no_exdir" f = File(no_exdir, mode="w") f.close() assert is_nonraw_object_directory(no_exdir.with_suffix(".exdir")) remove(setup_teardown_folder[1]) f = File(setup_teardown_folder[1], mode="w") f.close() assert is_nonraw_object_directory(setup_teardown_folder[1]) remove(setup_teardown_folder[1]) f = File(setup_teardown_folder[1], mode="a") f.close() assert is_nonraw_object_directory(setup_teardown_folder[1]) remove(setup_teardown_folder[1]) f = File(setup_teardown_folder[1], mode="a") f.close() assert is_nonraw_object_directory(setup_teardown_folder[1]) remove(setup_teardown_folder[1]) setup_teardown_folder[1].mkdir(parents=True) with pytest.raises(FileExistsError): f = File(setup_teardown_folder[1], mode="w") remove(setup_teardown_folder[1]) _create_object_directory(pathlib.Path(setup_teardown_folder[1]), exob._default_metadata(DATASET_TYPENAME)) with pytest.raises(FileExistsError): f = File(setup_teardown_folder[1], mode="w") remove(setup_teardown_folder[1]) with pytest.raises(IOError): f = File(setup_teardown_folder[1], mode="r") with pytest.raises(IOError): f = File(setup_teardown_folder[1], mode="r+") _create_object_directory(pathlib.Path(setup_teardown_folder[1]), exob._default_metadata(FILE_TYPENAME)) with pytest.raises(FileExistsError): f = File(setup_teardown_folder[1], mode="w") remove(setup_teardown_folder[1]) _create_object_directory(pathlib.Path(setup_teardown_folder[1]), exob._default_metadata(FILE_TYPENAME)) f = File(setup_teardown_folder[1], mode="w", allow_remove=True) remove(setup_teardown_folder[1]) _create_object_directory(pathlib.Path(setup_teardown_folder[1]), exob._default_metadata(FILE_TYPENAME)) with pytest.raises(IOError): f = File(setup_teardown_folder[1], mode="w-") with pytest.raises(IOError): f = File(setup_teardown_folder[1], mode="x") with pytest.raises(ValueError): f = File(setup_teardown_folder[1], mode="not existing")
def test_is_nonraw_object_directory(setup_teardown_folder): setup_teardown_folder[2].mkdir() result = exob.is_nonraw_object_directory(setup_teardown_folder[2]) assert result is False compare_metafile = setup_teardown_folder[2] / exob.META_FILENAME with compare_metafile.open("w", encoding="utf-8") as f: pass result = exob.is_nonraw_object_directory(setup_teardown_folder[2]) assert result is False remove(setup_teardown_folder[1]) with compare_metafile.open("w", encoding="utf-8") as meta_file: metadata = { exob.EXDIR_METANAME: { exob.VERSION_METANAME: 1} } yaml.safe_dump(metadata, meta_file, default_flow_style=False, allow_unicode=True) result = exob.is_nonraw_object_directory(setup_teardown_folder[2]) assert result is False remove(setup_teardown_folder[1]) with compare_metafile.open("w", encoding="utf-8") as meta_file: metadata = { exob.EXDIR_METANAME: { exob.TYPE_METANAME: "wrong_typename", exob.VERSION_METANAME: 1} } yaml.safe_dump(metadata, meta_file, default_flow_style=False, allow_unicode=True) result = exob.is_nonraw_object_directory(setup_teardown_folder[2]) assert result is False remove(setup_teardown_folder[1]) with compare_metafile.open("w", encoding="utf-8") as meta_file: metadata = { exob.EXDIR_METANAME: { exob.TYPE_METANAME: exob.DATASET_TYPENAME, exob.VERSION_METANAME: 1} } yaml.safe_dump(metadata, meta_file, default_flow_style=False, allow_unicode=True) result = exob.is_nonraw_object_directory(setup_teardown_folder[2]) assert result is True remove(setup_teardown_folder[2]) exob._create_object_directory(pathlib.Path(setup_teardown_folder[2]), exob._default_metadata(exob.DATASET_TYPENAME)) result = exob.is_nonraw_object_directory(setup_teardown_folder[2]) assert result is True