diff --git a/joint_state_publisher/package.xml b/joint_state_publisher/package.xml
index b3e73cfd..b536a3fe 100644
--- a/joint_state_publisher/package.xml
+++ b/joint_state_publisher/package.xml
@@ -23,6 +23,7 @@
python3-pytest
launch_testing
launch_testing_ros
+ ros2topic
ament_python
diff --git a/joint_state_publisher/test/test_mimic_cycle.py b/joint_state_publisher/test/test_mimic_cycle.py
index a66f2482..10ca6af7 100644
--- a/joint_state_publisher/test/test_mimic_cycle.py
+++ b/joint_state_publisher/test/test_mimic_cycle.py
@@ -19,10 +19,12 @@
from launch_ros.actions import Node
import launch_testing
import launch_testing.asserts
+import launch_testing.markers
import pytest
@pytest.mark.rostest
+@launch_testing.markers.keep_alive
def generate_test_description():
test_urdfs_dir = os.path.dirname(__file__)
joint_state_publisher = Node(
@@ -33,12 +35,15 @@ def generate_test_description():
LaunchDescription([joint_state_publisher, launch_testing.actions.ReadyToTest()]),
{'joint_state_publisher': joint_state_publisher})
+class TestMimicCycleRobot(unittest.TestCase):
+
+ def test_termination(self, proc_info, joint_state_publisher):
+ proc_info.assertWaitForShutdown(process=joint_state_publisher, timeout=10)
@launch_testing.post_shutdown_test()
-class TestMimicCycleRobot(unittest.TestCase):
+class TestMimicCycleRobotAfterShutdown(unittest.TestCase):
def test_exit(self, proc_info, proc_output):
jsp = list(proc_info.process_names())[0]
- # TODO(sloretz) Uncomment when ros2/launch#378 is released
- # launch_testing.asserts.assertInStderr(jsp, msg='Found an infinite recursive mimic chain')
+ launch_testing.asserts.assertInStderr(proc_output, expected_output='Found an infinite recursive mimic chain', process=jsp)
launch_testing.asserts.assertExitCodes(proc_info, process=jsp, allowable_exit_codes=[1])