Tests on Windows falsely positive reporting passed due to SIGINT handling
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 155
- Forks
- 182
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 6
Description
Bug report
Required Info:
- Operating System: Windows
- Installation type: Binary through Robostack/ms-iot
- Version or commit hash: humble
- DDS implementation: the default bundled one
- Client library (if applicable): rclcpp
Steps to reproduce issue
- Write a launch file in Python to launch one or more nodes.
- Write a gtest executable (for communication) that exit with code
1. - build and test with
rostestandlaunch_testing.asserts.assertExitCodes:@pytest.mark.rostest def generate_test_description(): return ( LaunchDescription( [...] ), {...: ...}, ) @launch_testing.post_shutdown_test() class TestOutcome(unittest.TestCase): def test_exit_codes(self, proc_info): launch_testing.asserts.assertExitCodes(proc_info)
Expected behavior
Failures are reported through assertExitCodes with a non-zero exit code.
Actual behavior
The test passes.
Additional information
This is related to https://github.com/ros2/launch/pull/94 which sends SIGTERM (it is stated that SIGINT is not supported in Windows).
Besides, exit_code=1 is allowed in https://github.com/ros2/launch/blob/d9ffd805e3d9ca42fe4dd0019ae095e9eb0d4d72/launch_testing/launch_testing/asserts/assert_exit_codes.py#L34-L39
Ask for help
- Are there any available workarounds for writing tests on Windows?
- Which component fails to handle SIGINT on Windows: the launch service or ROS2 executors?
@hidmic Do you have some information? (I notice the TODO are assigned to you.)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the provided launch_testing scenario on Windows and inspect launch_testing/asserts/assert_exit_codes.py, especially the handling of exit_code=1. Trace the SIGINT and SIGTERM behavior referenced in the issue and launch PR #94. Done means a gtest process exiting with code 1 causes assertExitCodes to report a failure rather than passing.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- operating-systems, testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100