mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-04-30 18:57:53 +02:00
For every node, the only information that is kept when saving a template are the non-default input attributes' values as well as the node's position. The unit test checking the templates' nodes is updated to stop taking outputs into account.
53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
#!/usr/bin/env python
|
|
# coding:utf-8
|
|
|
|
from meshroom.core.graph import Graph
|
|
from meshroom.core import pipelineTemplates, Version
|
|
from meshroom.core.node import CompatibilityIssue, CompatibilityNode
|
|
|
|
import json
|
|
import meshroom
|
|
|
|
|
|
def test_templateVersions():
|
|
"""
|
|
This test checks that there is no compatibility issue with the nodes saved in the template files.
|
|
It fails when an upgrade of a templates is needed. Any template can still be opened even if its
|
|
nodes are not up-to-date, as they will be automatically upgraded.
|
|
"""
|
|
|
|
assert len(pipelineTemplates) >= 1
|
|
|
|
for _, path in pipelineTemplates.items():
|
|
with open(path) as jsonFile:
|
|
fileData = json.load(jsonFile)
|
|
|
|
graphData = fileData.get(Graph.IO.Keys.Graph, fileData)
|
|
|
|
assert isinstance(graphData, dict)
|
|
|
|
header = fileData.get(Graph.IO.Keys.Header, {})
|
|
assert header.get("template", False)
|
|
nodesVersions = header.get(Graph.IO.Keys.NodesVersions, {})
|
|
|
|
for _, nodeData in graphData.items():
|
|
nodeType = nodeData["nodeType"]
|
|
assert nodeType in meshroom.core.nodesDesc
|
|
|
|
nodeDesc = meshroom.core.nodesDesc[nodeType]
|
|
currentNodeVersion = meshroom.core.nodeVersion(nodeDesc)
|
|
|
|
inputs = nodeData.get("inputs", {})
|
|
version = nodesVersions.get(nodeType, None)
|
|
|
|
compatibilityIssue = None
|
|
|
|
if version and currentNodeVersion and Version(version).major != Version(currentNodeVersion).major:
|
|
compatibilityIssue = CompatibilityIssue.VersionConflict
|
|
else:
|
|
for attrName, value in inputs.items():
|
|
if not CompatibilityNode.attributeDescFromName(nodeDesc.inputs, attrName, value):
|
|
compatibilityIssue = CompatibilityIssue.DescriptionConflict
|
|
break
|
|
|
|
assert compatibilityIssue is None
|