ros2 / ros2/launch

Tests on Windows falsely positive reporting passed due to SIGINT handling

Open
#767 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

more-information-needed
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
  1. Write a launch file in Python to launch one or more nodes.
  2. Write a gtest executable (for communication) that exit with code 1.
  3. build and test with rostest and launch_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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.