Skip to content

Commit c0542f8

Browse files
committed
[tests] Add tests and more protection for the rename in core/graph
1 parent 4d6e6b3 commit c0542f8

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

meshroom/core/graph.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -514,14 +514,23 @@ def addNode(self, node, uniqueName=None):
514514
return node
515515

516516
def renameNode(self, node: Node, newName: str):
517-
""" Rename a node in the Node Graph
517+
""" Rename a node in the Node Graph.
518+
If the proposed name is already assigned to a node then it will create a unique name
518519
519520
Args:
520521
node (Node): Node to rename.
521522
newName (str): New name of the node. Must be unique in the graph.
522523
"""
524+
# Handle empty string
525+
if not newName:
526+
return
527+
usedNames = {n._name for n in self._nodes if n != node}
528+
# Make sure we rename to an available name
529+
if newName in usedNames:
530+
newName = self._createUniqueNodeName(newName, usedNames)
531+
# Rename in the dict model
523532
self._nodes.rename(node._name, newName)
524-
# Finally rename
533+
# Finally rename the node name property and notify Qt
525534
node._name = newName
526535
node.nodeNameChanged.emit()
527536

meshroom/ui/commands.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -162,13 +162,9 @@ def __init__(self, graph, node, name, parent=None):
162162
self.name = name
163163

164164
def redoImpl(self):
165-
newName = self.name
166-
usedNames = {n._name for n in self.graph._nodes}
167-
if newName in usedNames:
168-
newName = self.graph._createUniqueNodeName(self.name, usedNames)
169-
self.setText(f"Rename Node {self.oldName} to {newName}")
165+
self.setText(f"Rename Node {self.oldName} to {self.name}")
170166
self.graph.renameNode(self.node, self.name)
171-
return newName
167+
return self.node._name
172168

173169
def undoImpl(self):
174170
self.graph.renameNode(self.node, self.oldName)

tests/test_graph.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,3 +285,27 @@ def test_cyclic_connection_should_raise_error():
285285
# Then
286286
with pytest.raises(CyclicDependencyError):
287287
tC.output.connectTo(tB.input)
288+
289+
290+
def test_rename_nodes():
291+
"""
292+
Test renaming nodes.
293+
"""
294+
295+
graph = Graph("")
296+
ls0 = graph.addNewNode("Ls")
297+
ls1 = graph.addNewNode("Ls")
298+
ls2 = graph.addNewNode("Ls")
299+
300+
# Test with empty string
301+
assert ls0.name == "Ls_1"
302+
graph.renameNode(ls0, "")
303+
assert ls0.name == "Ls_1"
304+
305+
# Rename
306+
graph.renameNode(ls0, "nodels")
307+
assert ls0.name == "nodels"
308+
graph.renameNode(ls1, "nodels")
309+
assert ls1.name == "nodels_1"
310+
graph.renameNode(ls2, "nodels")
311+
assert ls2.name == "nodels_2"

0 commit comments

Comments
 (0)