Source code for ewoksdata.tests.test_data_nexus

import time

import pytest
from silx.io import h5py_utils
from silx.io.url import DataUrl

from ..data import nexus
from ..data import url


[docs] def test_create_nexus_group(tmp_path): with nexus.create_nexus_group(str(tmp_path / "file.h5")) as ( h5item, already_existed, ): assert not already_existed assert h5item.name == "/results" with nexus.create_nexus_group(str(tmp_path / "file.h5")) as ( h5item, already_existed, ): assert already_existed assert h5item.name == "/results" with nexus.create_nexus_group( str(tmp_path / "file.h5::/c"), default_levels=("a", "b") ) as (h5item, already_existed): assert not already_existed assert h5item.name == "/c/b" with nexus.create_nexus_group( str(tmp_path / "file.h5::/c"), default_levels=("a", "b") ) as (h5item, already_existed): assert already_existed assert h5item.name == "/c/b" with nexus.create_nexus_group(str(tmp_path / "file.h5::/c/b")) as ( h5item, already_existed, ): assert already_existed assert h5item.name == "/c/b"
[docs] @pytest.mark.parametrize("as_string", [True, False]) @pytest.mark.parametrize("data_path", ["", "::/1.1/measurement/integrated"]) def test_create_url(tmp_path, data_path, as_string): tmp_url = DataUrl(f"{tmp_path / 'file.h5'}{data_path}") if data_path: expected_url = url.as_dataurl(tmp_url.path()) else: expected_url = url.as_dataurl(f"{tmp_url.path()}::/results") if as_string: input_url = tmp_url.path() else: input_url = tmp_url created_url = nexus.create_url(input_url) assert created_url == expected_url with h5py_utils.open_item( created_url.file_path(), created_url.data_path(), mode="a" ) as item: # Add unique id to identify the item item_id = f"CREATED AT {time.time()}" item.attrs["id"] = item_id created_url = nexus.create_url(input_url, overwrite=False) with h5py_utils.open_item( created_url.file_path(), created_url.data_path() ) as new_item: # It is the same item assert new_item.attrs["id"] == item_id created_url = nexus.create_url(input_url, overwrite=True) with h5py_utils.open_item( created_url.file_path(), created_url.data_path() ) as new_item: # It is a different item assert "id" not in new_item.attrs