test(ros): fail the interop job when it runs no tests - #271
Merged
Conversation
The ROS interop step captured nextest's output with `complete` and never printed it, so a green job showed the command echo followed by "All ROS 2 <distro> tests passed!" and nothing in between. That banner could not be falsified: nextest exits 0 having run zero tests, and each interop test returns early -- still passing -- when check_ros2_available says no. Print the captured output and require a nextest summary reporting a non-zero count. Split out of #250, where it rode along because the swallowed output was found while gathering evidence for that fix. It is CI hygiene and has nothing to do with subscriber re-entrancy.
This was referenced Jul 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The ROS interop step captured nextest's output with
completeand never printed it, so a passing job logged the command and then✅ All ROS 2 <distro> tests passed!with nothing in between.That banner could not be falsified. nextest exits 0 when it runs zero tests, and every interop test additionally returns early — still passing — when
check_ros2_availablesays no. Nothing in the log distinguished "137 interop tests passed against rmw_zenoh_cpp" from "the binary matched no tests".Key Changes
Print the captured output, and require a nextest summary reporting a non-zero count. A run that produces no summary line, or reports
0 tests run, is now a hard error rather than a pass.What fails without this
Before, the entire step output between the echoed command and the success banner was empty. After, the same job prints every test and its own assertion:
The gate was checked in all three directions before being relied on: a 57-test summary passes, a
0 tests runsummary errors, and absent output errors.Notes
Split out of #250, where it rode along because the swallowed output was found while gathering evidence for that fix. It is CI hygiene and has nothing to do with subscriber re-entrancy.
Breaking Changes
None.