mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-06-21 12:07:24 +02:00
The plugin manager is now effectively used for all the operations that involve registering or unregistering nodes.
71 lines
2.4 KiB
Python
71 lines
2.4 KiB
Python
from meshroom.core import desc, pluginManager
|
|
from meshroom.core.node import Node
|
|
from meshroom.core.graph import Graph, loadGraph
|
|
from meshroom.core.plugins import NodePlugin
|
|
|
|
|
|
class NodeWithCreationCallback(desc.InputNode):
|
|
"""Node defining an 'onNodeCreated' callback, triggered a new node is added to a Graph."""
|
|
|
|
inputs = [
|
|
desc.BoolParam(
|
|
name="triggered",
|
|
label="Triggered",
|
|
description="Attribute impacted by the `onNodeCreated` callback",
|
|
value=False,
|
|
),
|
|
]
|
|
|
|
@classmethod
|
|
def onNodeCreated(cls, node: Node):
|
|
"""Triggered when a new node is created within a Graph."""
|
|
node.triggered.value = True
|
|
|
|
|
|
class TestNodeCreationCallback:
|
|
nodePlugin = NodePlugin(NodeWithCreationCallback)
|
|
|
|
@classmethod
|
|
def setup_class(cls):
|
|
pluginManager.registerNode(cls.nodePlugin)
|
|
|
|
@classmethod
|
|
def teardown_class(cls):
|
|
pluginManager.unregisterNode(cls.nodePlugin)
|
|
|
|
def test_notTriggeredOnNodeInstantiation(self):
|
|
node = Node(NodeWithCreationCallback.__name__)
|
|
assert node.triggered.value is False
|
|
|
|
def test_triggeredOnNewNodeCreationInGraph(self):
|
|
graph = Graph("")
|
|
node = graph.addNewNode(NodeWithCreationCallback.__name__)
|
|
assert node.triggered.value is True
|
|
|
|
def test_notTriggeredOnNodeDuplication(self):
|
|
graph = Graph("")
|
|
node = graph.addNewNode(NodeWithCreationCallback.__name__)
|
|
node.triggered.resetToDefaultValue()
|
|
|
|
duplicates = graph.duplicateNodes([node])
|
|
assert duplicates[node][0].triggered.value is False
|
|
|
|
def test_notTriggeredOnGraphLoad(self, graphSavedOnDisk):
|
|
graph: Graph = graphSavedOnDisk
|
|
node = graph.addNewNode(NodeWithCreationCallback.__name__)
|
|
node.triggered.resetToDefaultValue()
|
|
graph.save()
|
|
|
|
loadedGraph = loadGraph(graph.filepath)
|
|
assert loadedGraph.node(node.name).triggered.value is False
|
|
|
|
def test_triggeredOnGraphInitializationFromTemplate(self, graphSavedOnDisk):
|
|
graph: Graph = graphSavedOnDisk
|
|
node = graph.addNewNode(NodeWithCreationCallback.__name__)
|
|
node.triggered.resetToDefaultValue()
|
|
graph.save(template=True)
|
|
|
|
graphFromTemplate = Graph("")
|
|
graphFromTemplate.initFromTemplate(graph.filepath)
|
|
|
|
assert graphFromTemplate.node(node.name).triggered.value is True
|