Meshroom/tests/utils.py
Yann Lanthony 87fbcee06d [core][graphIO] Improve node type version handling
* Deserialization: Replace the logic that defaulted the node type version to "0.0" when unspecified,
and assume that unspecified version on a node is targetting current node type version.
* Serialization: Only serialize node type versions for which a version info is available.

* Test suites:
  * Add helper context manager to manually override the version of a given node type.
  * Add new unit tests to cover version conflicts handling is various scenarios.
2025-02-06 16:46:05 +01:00

28 lines
816 B
Python

from contextlib import contextmanager
from unittest.mock import patch
from typing import Type
import meshroom
from meshroom.core import registerNodeType, unregisterNodeType
from meshroom.core import desc
@contextmanager
def registeredNodeTypes(nodeTypes: list[Type[desc.Node]]):
for nodeType in nodeTypes:
registerNodeType(nodeType)
yield
for nodeType in nodeTypes:
unregisterNodeType(nodeType)
@contextmanager
def overrideNodeTypeVersion(nodeType: Type[desc.Node], version: str):
"""Helper context manager to override the version of a given node type."""
unpatchedFunc = meshroom.core.nodeVersion
with patch.object(
meshroom.core,
"nodeVersion",
side_effect=lambda type: version if type is nodeType else unpatchedFunc(type),
):
yield