1616import functools
1717import itertools
1818import os
19- import re
2019import sys
2120import unittest
2221
@@ -105,6 +104,16 @@ def generate_test_description(rmw_implementation):
105104
106105
107106class TestROS2ServiceCLI (unittest .TestCase ):
107+ expected_builtin_services = {
108+ 'describe_parameters' : 'rcl_interfaces/srv/DescribeParameters' ,
109+ 'get_parameter_types' : 'rcl_interfaces/srv/GetParameterTypes' ,
110+ 'get_parameters' : 'rcl_interfaces/srv/GetParameters' ,
111+ 'get_type_description' : 'type_description_interfaces/srv/GetTypeDescription' ,
112+ 'list_parameters' : 'rcl_interfaces/srv/ListParameters' ,
113+ 'set_parameters' : 'rcl_interfaces/srv/SetParameters' ,
114+ 'set_parameters_atomically' : 'rcl_interfaces/srv/SetParametersAtomically' ,
115+ }
116+ builtin_service_count = len (expected_builtin_services )
108117
109118 @classmethod
110119 def setUpClass (
@@ -138,6 +147,13 @@ def launch_service_command(self, arguments):
138147 yield service_command
139148 cls .launch_service_command = launch_service_command
140149
150+ @classmethod
151+ def get_expected_builtin_services (cls , namespace : str , with_types : bool = False ) -> list [str ]:
152+ return [
153+ f'{ namespace } /{ srv_name } ' + (f' [{ srv_type } ]' if with_types else '' )
154+ for srv_name , srv_type in cls .expected_builtin_services .items ()
155+ ]
156+
141157 @launch_testing .markers .retry_on_failure (times = 5 , delay = 1 )
142158 def test_list_services (self ):
143159 with self .launch_service_command (arguments = ['list' ]) as service_command :
@@ -146,9 +162,7 @@ def test_list_services(self):
146162 assert launch_testing .tools .expect_output (
147163 expected_lines = itertools .chain (
148164 ['/my_ns/echo' ],
149- itertools .repeat (re .compile (
150- r'/my_ns/echo_server/.*parameter.*'
151- ), 6 )
165+ self .get_expected_builtin_services ('/my_ns/echo_server' ),
152166 ),
153167 text = service_command .output ,
154168 strict = True
@@ -164,13 +178,9 @@ def test_list_hidden(self):
164178 assert launch_testing .tools .expect_output (
165179 expected_lines = itertools .chain (
166180 ['/my_ns/_echo' ],
167- itertools .repeat (re .compile (
168- r'/my_ns/_hidden_echo_server/.*parameter.*'
169- ), 6 ),
181+ self .get_expected_builtin_services ('/my_ns/_hidden_echo_server' ),
170182 ['/my_ns/echo' ],
171- itertools .repeat (re .compile (
172- r'/my_ns/echo_server/.*parameter.*'
173- ), 6 )
183+ self .get_expected_builtin_services ('/my_ns/echo_server' ),
174184 ),
175185 text = service_command .output ,
176186 strict = True
@@ -184,10 +194,7 @@ def test_list_with_types(self):
184194 assert launch_testing .tools .expect_output (
185195 expected_lines = itertools .chain (
186196 ['/my_ns/echo [test_msgs/srv/BasicTypes]' ],
187- itertools .repeat (re .compile (
188- r'/my_ns/echo_server/.*parameter.*'
189- r' \[rcl_interfaces/srv/.*Parameter.*\]'
190- ), 6 )
197+ self .get_expected_builtin_services ('/my_ns/echo_server' , with_types = True )
191198 ),
192199 text = service_command .output ,
193200 strict = True
@@ -200,7 +207,7 @@ def test_list_count(self):
200207 assert service_command .exit_code == launch_testing .asserts .EXIT_OK
201208 output_lines = service_command .output .splitlines ()
202209 assert len (output_lines ) == 1
203- assert int (output_lines [0 ]) == 7
210+ assert int (output_lines [0 ]) == self . builtin_service_count + 1
204211
205212 @launch_testing .markers .retry_on_failure (times = 5 , delay = 1 )
206213 def test_find (self ):
0 commit comments