From 8af496076aff17be3e6c1bda51b59461557dd2d8 Mon Sep 17 00:00:00 2001 From: Marcin Zieba <49913098+marcinpsk@users.noreply.github.com> Date: Tue, 30 Dec 2025 10:19:17 +0100 Subject: [PATCH] fix: Detect duplicates between front<->rear ports mapping (#3821) * fix: extend front/rear port check to modules * fix: detect duplicates between front<->rear ports mapping --------- Co-authored-by: Harry --- module-types/FS/FHD-8MTPMESHOM4.yaml | 2 +- module-types/FS/FHD-8MTPMESHOS2.yaml | 2 +- tests/definitions_test.py | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/module-types/FS/FHD-8MTPMESHOM4.yaml b/module-types/FS/FHD-8MTPMESHOM4.yaml index e3b530a2..28d97d0f 100644 --- a/module-types/FS/FHD-8MTPMESHOM4.yaml +++ b/module-types/FS/FHD-8MTPMESHOM4.yaml @@ -31,7 +31,7 @@ front-ports: color: 00ffff - name: '{module}:B-2' type: mpo - rear_port: '{module}:A-2' + rear_port: '{module}:B-2' rear_port_position: 1 color: 00ffff - name: '{module}:B-3' diff --git a/module-types/FS/FHD-8MTPMESHOS2.yaml b/module-types/FS/FHD-8MTPMESHOS2.yaml index bec2074c..20b7989b 100644 --- a/module-types/FS/FHD-8MTPMESHOS2.yaml +++ b/module-types/FS/FHD-8MTPMESHOS2.yaml @@ -26,7 +26,7 @@ front-ports: rear_port_position: 1 - name: '{module}:B-2' type: mpo - rear_port: '{module}:A-2' + rear_port: '{module}:B-2' rear_port_position: 1 - name: '{module}:B-3' type: mpo diff --git a/tests/definitions_test.py b/tests/definitions_test.py index 67827815..56a6d601 100644 --- a/tests/definitions_test.py +++ b/tests/definitions_test.py @@ -211,6 +211,7 @@ def test_definitions(file_path, schema, change_type): rp.get("name") for rp in rear_ports if isinstance(rp, dict) } + rear_port_positions = {} for fp in front_ports: if not isinstance(fp, dict): continue @@ -225,6 +226,19 @@ def test_definitions(file_path, schema, change_type): pytrace=False, ) + # Check for duplicate (rear_port, rear_port_position) combinations + if rear_port_ref: + rear_port_pos = fp.get("rear_port_position", 1) + key = (rear_port_ref, rear_port_pos) + if key in rear_port_positions: + pytest.fail( + f"{file_path}: front-port '{fp.get('name')}' has duplicate " + f"(rear_port, rear_port_position) = ('{rear_port_ref}', {rear_port_pos}). " + f"Already used by front-port '{rear_port_positions[key]}'.", + pytrace=False, + ) + rear_port_positions[key] = fp.get("name") + # Verify the slug is valid, only if the definition type is a Device if this_device.isDevice: assert this_device.verify_slug(KNOWN_SLUGS), pytest.fail(this_device.failureMessage, False)