Пример #1
0
def test_object_meta(setup_teardown_folder):
    obj = Object(setup_teardown_folder[2],
                 pathlib.PurePosixPath(""),
                 "test_object",
                 io_mode=None)

    _create_object_directory(setup_teardown_folder[2], DATASET_TYPENAME)
    _create_object_directory(setup_teardown_folder[2] / "test_object",
                             GROUP_TYPENAME)

    assert isinstance(obj.meta, Attribute)
    assert obj.meta.mode.value == 2
    with pytest.raises(AttributeError):
        obj.meta = "test value"
Пример #2
0
def test_object_require_raw(setup_teardown_folder):
    obj = Object(setup_teardown_folder[2],
                 pathlib.PurePosixPath(""),
                 "test_object",
                 io_mode=None)

    _create_object_directory(setup_teardown_folder[2], DATASET_TYPENAME)
    _create_object_directory(setup_teardown_folder[2] / "test_object",
                             GROUP_TYPENAME)

    obj.require_raw("test_raw")
    assert (setup_teardown_folder[2] / "test_object" / "test_raw").is_dir()

    obj.require_raw("test_raw")
    assert (setup_teardown_folder[2] / "test_object" / "test_raw").is_dir()
Пример #3
0
def test_object_create_raw(setup_teardown_folder):
    obj = Object(setup_teardown_folder[2],
                 pathlib.PurePosixPath(""),
                 "test_object",
                 io_mode=None)

    _create_object_directory(setup_teardown_folder[2], DATASET_TYPENAME)
    _create_object_directory(setup_teardown_folder[2] / "test_object",
                             GROUP_TYPENAME)

    obj.create_raw("test_raw")
    assert (setup_teardown_folder[2] / "test_object" / "test_raw").is_dir()

    with pytest.raises(FileExistsError):
        obj.create_raw("test_raw")
Пример #4
0
def test_object_attrs(setup_teardown_folder):
    obj = Object(setup_teardown_folder[2],
                 pathlib.PurePosixPath(""),
                 "test_object",
                 io_mode=None)

    _create_object_directory(setup_teardown_folder[2], DATASET_TYPENAME)
    _create_object_directory(setup_teardown_folder[2] / "test_object",
                             GROUP_TYPENAME)

    assert isinstance(obj.attrs, Attribute)
    assert obj.attrs.mode.value == 1
    obj.attrs = "test value"

    assert is_nonraw_object_directory(setup_teardown_folder[2] / "test_object")

    with (setup_teardown_folder[2] / "test_object" /
          ATTRIBUTES_FILENAME).open("r") as meta_file:
        meta_data = yaml.safe_load(meta_file)

        assert meta_data == "test value"
Пример #5
0
def test_create_object_directory(setup_teardown_folder):
    with pytest.raises(ValueError):
        exob._create_object_directory(pathlib.Path(setup_teardown_folder[2]),
                                      exob._default_metadata("wrong_typename"))

    exob._create_object_directory(
        pathlib.Path(setup_teardown_folder[2]),
        exob._default_metadata(exob.DATASET_TYPENAME))

    assert setup_teardown_folder[2].is_dir()

    file_path = setup_teardown_folder[2] / exob.META_FILENAME
    assert file_path.is_file()

    compare_metadata = {
        exob.EXDIR_METANAME: {
            exob.TYPE_METANAME: exob.DATASET_TYPENAME,
            exob.VERSION_METANAME: 1
        }
    }

    with file_path.open("r", encoding="utf-8") as meta_file:
        metadata = yaml.safe_load(meta_file)

        assert metadata == compare_metadata

    with pytest.raises(IOError):
        exob._create_object_directory(pathlib.Path(setup_teardown_folder[2]),
                                      exob.DATASET_TYPENAME)
Пример #6
0
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")
Пример #7
0
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