launch icon indicating copy to clipboard operation
launch copied to clipboard

Tests on Windows falsely positive reporting passed due to SIGINT handling

Open huweiATgithub opened this issue 1 year ago • 1 comments

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.)

huweiATgithub avatar Mar 13 '24 11:03 huweiATgithub

Write a gtest executable (for communication) that exit with code 1. Are there any available workarounds for writing tests on Windows?

can you try exit code with different values like 2 or something else, to see if the test completes as expected?

fujitatomoya avatar Mar 21 '24 19:03 fujitatomoya