This commit is contained in:
Mubashir R 2026-06-12 08:17:43 +05:00 committed by GitHub
commit c88abcd954
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 35 additions and 2 deletions

View file

@ -127,8 +127,7 @@ def validate_trigger_paths(
)
)
first_node_id = seen_paths.get(trigger_path)
if first_node_id is None:
if trigger_path not in seen_paths:
seen_paths[trigger_path] = node_id
else:
issues.append(

View file

@ -54,3 +54,37 @@ def test_validate_trigger_paths_rejects_long_and_duplicate_paths():
in messages
)
assert "Trigger path is duplicated in this workflow." in messages
def test_validate_trigger_paths_detects_duplicate_when_first_node_has_no_id():
"""A duplicate trigger path must be flagged even when the first node sharing
that path has no ``id`` (``node.get("id")`` is None).
Regression: the duplicate check previously used ``seen_paths.get(path)`` and
treated a ``None`` result as "not seen yet", so a first node with a missing
id (stored as None) made every later node with the same path slip through
undetected.
"""
workflow_definition = {
"nodes": [
# No "id" key -> node_id resolves to None.
{"type": "trigger", "data": {"trigger_path": "sales_agent"}},
{
"id": "trigger-2",
"type": "trigger",
"data": {"trigger_path": "sales_agent"},
},
],
"edges": [],
}
issues = validate_trigger_paths(workflow_definition)
messages = [issue.message for issue in issues]
assert "Trigger path is duplicated in this workflow." in messages
duplicate_issue = next(
issue
for issue in issues
if issue.message == "Trigger path is duplicated in this workflow."
)
assert duplicate_issue.node_id == "trigger-2"