Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions meshroom/core/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ def name(self):
return f"{self.node.name}({self.index})"
else:
return self.node.name

@property
def logManager(self):
if self._logManager is None:
Expand Down Expand Up @@ -520,7 +520,7 @@ def process(self, forceCompute=False, inCurrentEnv=False):
executionStatus = None
self.statThread = stats.StatisticsThread(self)
self.statThread.start()

try:
self.node.nodeDesc.processChunk(self)
# NOTE: this assumes saving the output attributes for each chunk
Expand Down Expand Up @@ -672,7 +672,7 @@ def __init__(self, nodeType: str, position: Position = None, parent: BaseObject
self.packageName: str = ""
self.packageVersion: str = ""
self._internalFolder: str = ""
self._sourceCodeFolder: str = ""
self._sourceCodeFolder: str = self.nodeDesc.sourceCodeFolder if self.nodeDesc else ""
self._internalFolderExp = "{cache}/{nodeType}/{uid}"

# temporary unique name for this node
Expand Down Expand Up @@ -742,7 +742,7 @@ def getNodeLogLevel(self):
if self.hasInternalAttribute("nodeDefaultLogLevel"):
return self.internalAttribute("nodeDefaultLogLevel").value.strip()
return "info"

def getColor(self):
"""
Returns:
Expand Down Expand Up @@ -1828,7 +1828,6 @@ def __init__(self, nodeType, position=None, parent=None, uid=None, **kwargs):

self.packageName = self.nodeDesc.packageName
self.packageVersion = self.nodeDesc.packageVersion
self._sourceCodeFolder = self.nodeDesc.sourceCodeFolder

for attrDesc in self.nodeDesc.inputs:
self._attributes.add(attributeFactory(attrDesc, kwargs.get(attrDesc.name, None),
Expand Down
23 changes: 23 additions & 0 deletions tests/plugins/meshroom/pluginA/PluginAInputNode.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
__version__ = "1.0"

from meshroom.core import desc


class PluginANodeA(desc.InputNode):
inputs = [
desc.File(
name="input",
label="Input",
description="",
value="",
),
]

outputs = [
desc.File(
name="output",
label="Output",
description="",
value="",
),
]
4 changes: 2 additions & 2 deletions tests/plugins/meshroom/pluginC/PluginCNodeA.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

class PluginCNodeA(desc.Node):
"""PluginCNodeA"""

author = "testAuthor"

inputs = [
desc.File(
name="input",
Expand Down
63 changes: 56 additions & 7 deletions tests/test_nodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@
from pathlib import Path

from meshroom.core import pluginManager, loadClassesNodes
from meshroom.core.plugins import Plugin
from meshroom.core import pluginManager
from meshroom.core import pluginManager
from meshroom.core.graph import Graph
from meshroom.core.plugins import Plugin

from .utils import registerNodeDesc

Expand Down Expand Up @@ -38,17 +36,68 @@ def test_loadedPlugin(self):
assert plugin == self.plugin
node = plugin.nodes["PluginCNodeA"]
nodeType = node.nodeDescriptor

g = Graph("")
registerNodeDesc(nodeType)
node = g.addNewNode(nodeType.__name__)

nodeDocumentation = node.getDocumentation()
assert nodeDocumentation == "PluginCNodeA"
nodeInfos = {item["key"]: item["value"] for item in node.getNodeInfos()}
assert nodeInfos["module"] == "pluginC.PluginCNodeA"
plugin_path = os.path.join(self.folder, "pluginC", "PluginCNodeA.py")
assert nodeInfos["modulePath"] == Path(plugin_path).as_posix() # modulePath seems to follow linux convention
pluginPath = os.path.join(self.folder, "pluginC", "PluginCNodeA.py")
assert nodeInfos["modulePath"] == Path(pluginPath).as_posix() # modulePath seems to follow linux convention
assert nodeInfos["author"] == "testAuthor"
assert nodeInfos["license"] == "no-license"
assert nodeInfos["version"] == "1.0"


class TestNodeVariables:
plugin = None

@classmethod
def setup_class(cls):
folder = os.path.join(os.path.dirname(__file__), "plugins", "meshroom")
package = "pluginA"
cls.plugin = Plugin(package, folder)
nodes = loadClassesNodes(folder, package)
for node in nodes:
cls.plugin.addNodePlugin(node)
pluginManager.addPlugin(cls.plugin)

@classmethod
def teardown_class(cls):
for node in cls.plugin.nodes.values():
pluginManager.unregisterNode(node)
pluginManager.removePlugin(cls.plugin)
cls.plugin = None

def test_staticVariables(self):
g = Graph("")

for nodeName in self.plugin.nodes.keys():
n = g.addNewNode(nodeName)
assert nodeName == n._staticExpVars["nodeType"]
assert n.sourceCodeFolder
assert n.sourceCodeFolder == n._staticExpVars["nodeSourceCodeFolder"]

self.plugin.nodes[nodeName].reload()

assert nodeName == n._staticExpVars["nodeType"]
assert n.sourceCodeFolder
assert n.sourceCodeFolder == n._staticExpVars["nodeSourceCodeFolder"]

def test_expVariables(self):
g = Graph("")

for nodeName in self.plugin.nodes.keys():
n = g.addNewNode(nodeName)
assert n._expVars["uid"] == n._uid
assert n.internalFolder
assert n.internalFolder == n._expVars["nodeCacheFolder"]

self.plugin.nodes[nodeName].reload()

assert n._expVars["uid"] == n._uid
assert n.internalFolder
assert n.internalFolder == n._expVars["nodeCacheFolder"]