import launch_testing.asserts import launch_testing.markers import launch_testing.tools import pytest from rclpy.utilities import get_available_rmw_implementations sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from utilities.sros2_cli_test_case import generate_sros2_cli_test_description # noqa: E402 from utilities.sros2_cli_test_case import SROS2CLITestCase # noqa: E402 @pytest.mark.rostest @launch_testing.parametrize('rmw_implementation,use_daemon', itertools.product( get_available_rmw_implementations(), (True, False) )) @launch_testing.markers.keep_alive def generate_test_description(rmw_implementation, use_daemon): return generate_sros2_cli_test_description( fixture_actions=[ReadyToTest()], rmw_implementation=rmw_implementation, use_daemon=use_daemon ), locals() class TestSROS2GeneratePolicyVerbWithNoNodes(SROS2CLITestCase): def test_generate_policy_no_nodes(self): with tempfile.TemporaryDirectory() as tmpdir: with self.launch_sros2_command(
import pytest from rclpy.utilities import get_available_rmw_implementations # Skip cli tests on Windows while they exhibit pathological behavior # https://github.com/ros2/build_farmer/issues/248 if sys.platform.startswith('win'): pytest.skip( 'CLI tests can block for a pathological amount of time on Windows.', allow_module_level=True) @pytest.mark.rostest @launch_testing.parametrize('rmw_implementation', get_available_rmw_implementations()) def generate_test_description(rmw_implementation): path_to_fixtures = os.path.join(os.path.dirname(__file__), 'fixtures') additional_env = { 'RMW_IMPLEMENTATION': rmw_implementation, 'PYTHONUNBUFFERED': '1' } path_to_talker_node_script = os.path.join(path_to_fixtures, 'talker_node.py') path_to_listener_node_script = os.path.join(path_to_fixtures, 'listener_node.py') hidden_talker_node_action = Node( executable=sys.executable, arguments=[path_to_talker_node_script], remappings=[('chatter', '_hidden_chatter')], additional_env=additional_env )
def get_echo_call_output(**kwargs): request = BasicTypes.Request() for field_name, field_value in kwargs.items(): setattr(request, field_name, field_value) response = BasicTypes.Response() for field_name, field_value in kwargs.items(): setattr(response, field_name, field_value) return [ 'requester: making request: ' + repr(request), '', 'response:', repr(response), '' ] @pytest.mark.rostest @launch_testing.parametrize('rmw_implementation', get_available_rmw_implementations()) def generate_test_description(rmw_implementation): path_to_echo_server_script = os.path.join(os.path.dirname(__file__), 'fixtures', 'echo_server.py') additional_env = {'RMW_IMPLEMENTATION': rmw_implementation} return LaunchDescription([ # Always restart daemon to isolate tests. ExecuteProcess( cmd=['ros2', 'daemon', 'stop'], name='daemon-stop', on_exit=[ ExecuteProcess( cmd=['ros2', 'daemon', 'start'], name='daemon-start', on_exit=[ # Add test fixture actions.