diff --git a/client/ayon_core/pipeline/publish/lib.py b/client/ayon_core/pipeline/publish/lib.py index e3e67c3b08..4d28cea23c 100644 --- a/client/ayon_core/pipeline/publish/lib.py +++ b/client/ayon_core/pipeline/publish/lib.py @@ -956,7 +956,6 @@ def register_representation(instance, traits_data): traits_data (dict): Representation traits data. """ - if "representations" not in instance.data: instance.data["representations"] = [] diff --git a/client/ayon_core/pipeline/traits/__init__.py b/client/ayon_core/pipeline/traits/__init__.py index 0ec59f03e3..a4bcc72462 100644 --- a/client/ayon_core/pipeline/traits/__init__.py +++ b/client/ayon_core/pipeline/traits/__init__.py @@ -1,9 +1,11 @@ import collections -from pathlib import Path -import inspect import hashlib +import inspect import json +from pathlib import Path + import deal + from .generated.Ayon.traits.meta import FilesBundleTrait @@ -60,7 +62,3 @@ def update_file_bundle_data(traits_data): if files: trait.setSizes(json.dumps(sizes)) trait.setHashes(json.dumps(hashes)) - - - - diff --git a/tests/client/ayon_core/pipeline/traits/test_traits.py b/tests/client/ayon_core/pipeline/traits/test_traits.py index 5a6935f779..a37f477313 100644 --- a/tests/client/ayon_core/pipeline/traits/test_traits.py +++ b/tests/client/ayon_core/pipeline/traits/test_traits.py @@ -1,16 +1,22 @@ -import openassetio_mediacreation as mc +import json +import hashlib +from pathlib import Path + +import ayon_core.pipeline.traits as traits +import ayon_core.pipeline.traits.generated as traits_generated import pytest from openassetio.trait import TraitsData -import json -import ayon_core.pipeline.traits as traits @pytest.fixture def file_sequence(tmp_path): + files = [] for x in range(5): file = tmp_path / f"file_{x}.txt" file.write_text(f"Hello {x}") - yield file + files.append(file) + return files + def _print_data(data): as_dict = { @@ -24,6 +30,7 @@ def _print_data(data): def test_traits_data(): + mc = traits_generated.openassetio_mediacreation data = TraitsData() lc = mc.traits.content.LocatableContentTrait(data) lc.setLocation("https://www.google.com") @@ -33,13 +40,13 @@ def test_traits_data(): def test_generated_traits(): data = TraitsData() - import ayon_core.pipeline.traits.generated as traits + mc = traits_generated.openassetio_mediacreation assert hasattr(traits, "openassetio_mediacreation"), "The module should have openassetio_mediacreation" - version_t = traits.openassetio_mediacreation.traits.lifecycle.StableTrait + version_t = mc.traits.lifecycle.StableTrait version_t.imbueTo(data) - assert data.hasTrait(traits.openassetio_mediacreation.traits.lifecycle.StableTrait.kId) + assert data.hasTrait(mc.traits.lifecycle.StableTrait.kId) def test_get_available_traits_ids(printer): @@ -52,10 +59,16 @@ def test_get_available_traits_ids(printer): def test_update_file_bundle_data(printer, file_sequence): data = TraitsData() - fb = mc.traits.files.FilesBundleTrait(data) - files - fb.setFiles(json.dumps([str(file) for file in list[file_sequence])) + ayon = traits_generated.Ayon + fb = ayon.traits.meta.FilesBundleTrait(data) + files = list(file_sequence) # type: list[Path] + fb.setFiles(json.dumps([file.as_posix() for file in files])) traits.update_file_bundle_data(data) assert fb.getSizes() is not None assert fb.getHashes() is not None - _print_data(data) + for idx, file in enumerate(json.loads(fb.getFiles())): + file = Path(file) + calc_hash = hashlib.sha256(file.read_bytes()).hexdigest() + size = file.stat().st_size + assert json.loads(fb.getSizes())[idx] == size + assert json.loads(fb.getHashes())[idx] == calc_hash