From 73d1ac9d5fa0097543f58564fb93a7d532e16419 Mon Sep 17 00:00:00 2001 From: Bas Zalmstra <4995967+baszalmstra@users.noreply.github.com> Date: Tue, 1 Sep 2026 09:45:38 +0200 Subject: [PATCH] fix: strip only the legacy prefix from GHA job names get_stage_name dropped the first two dash-separated segments of a package name, which assumed every package is called ros--. With package_name_mode: both that assumption breaks for new-scheme names containing a hyphen, so ros2-distro-mutex showed up as 'mutex' and ros2-ament-package as 'package'. Match the ros-- prefix explicitly and leave anything else alone. Fixes #136 --- vinca/generate_gha.py | 5 +++-- vinca/test_generate_gha.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 vinca/test_generate_gha.py diff --git a/vinca/generate_gha.py b/vinca/generate_gha.py index de9e73c..8d541e1 100644 --- a/vinca/generate_gha.py +++ b/vinca/generate_gha.py @@ -238,10 +238,11 @@ def dump_for_gha(doc, f): def get_stage_name(batch): + legacy_prefix = f"ros-{config.ros_distro}-" stage_name = [] for pkg in batch: - if len(pkg.split("-")) > 2: - stage_name.append("-".join(pkg.split("-")[2:])) + if pkg.startswith(legacy_prefix): + stage_name.append(pkg[len(legacy_prefix) :]) else: stage_name.append(pkg) return " ".join(stage_name) diff --git a/vinca/test_generate_gha.py b/vinca/test_generate_gha.py new file mode 100644 index 0000000..79c8b8d --- /dev/null +++ b/vinca/test_generate_gha.py @@ -0,0 +1,34 @@ +"""Tests for the GitHub Actions pipeline generation.""" + +import pytest + +from vinca import config +from vinca.generate_gha import get_stage_name + + +@pytest.fixture(autouse=True) +def rolling_distro(): + previous = config.ros_distro + config.ros_distro = "rolling" + yield + config.ros_distro = previous + + +@pytest.mark.parametrize( + "package,expected", + [ + ("ros-rolling-rclcpp", "rclcpp"), + ("ros-rolling-ament-package", "ament-package"), + ("ros2-rclcpp", "ros2-rclcpp"), + ("ros2-ament-package", "ros2-ament-package"), + ("ros2-distro-mutex", "ros2-distro-mutex"), + ("ros-humble-rclcpp", "ros-humble-rclcpp"), + ], +) +def test_get_stage_name_strips_only_the_legacy_prefix(package, expected): + assert get_stage_name([package]) == expected + + +def test_get_stage_name_joins_a_batch(): + batch = ["ros-rolling-rclcpp", "ros2-ament-package"] + assert get_stage_name(batch) == "rclcpp ros2-ament-package"