mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-04-28 09:47:20 +02:00
* 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.
28 lines
816 B
Python
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
|