diff --git a/vinca/generate_gha.py b/vinca/generate_gha.py index 6db5927..27f553a 100644 --- a/vinca/generate_gha.py +++ b/vinca/generate_gha.py @@ -159,12 +159,16 @@ def dump_for_gha(doc, f): def get_stage_name(batch): - legacy_prefix = f"ros-{config.ros_distro}-" + """Job name: the batch's packages without their ros-- or ros2- prefix, each + once (with package_name_mode: both a package has a recipe under either name).""" + prefixes = (f"ros-{config.ros_distro}-", "ros2-") stage_name = [] for pkg in batch: - if pkg.startswith(legacy_prefix): - stage_name.append(pkg[len(legacy_prefix) :]) - else: + for prefix in prefixes: + if pkg.startswith(prefix): + pkg = pkg[len(prefix) :] + break + if pkg not in stage_name: stage_name.append(pkg) return " ".join(stage_name) diff --git a/vinca/test_generate_gha.py b/vinca/test_generate_gha.py index 1d4cb1f..7226414 100644 --- a/vinca/test_generate_gha.py +++ b/vinca/test_generate_gha.py @@ -27,19 +27,21 @@ def rolling_distro(): [ ("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"), + ("ros2-rclcpp", "rclcpp"), + ("ros2-ament-package", "ament-package"), + ("ros2-distro-mutex", "distro-mutex"), + ("ros2-ros2-control", "ros2-control"), + ("ros2cli", "ros2cli"), ("ros-humble-rclcpp", "ros-humble-rclcpp"), ], ) -def test_get_stage_name_strips_only_the_legacy_prefix(package, expected): +def test_get_stage_name_strips_the_package_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" +def test_get_stage_name_joins_a_batch_and_lists_each_package_once(): + batch = ["ros2-rclcpp", "ros-rolling-rclcpp", "ros2-ament-package"] + assert get_stage_name(batch) == "rclcpp ament-package" def test_unix_pipeline_sets_up_pixi(tmp_path):