@@ -145,37 +145,11 @@ TEST_F(CLASSNAME(TestArgumentsFixture, RMW_IMPLEMENTATION), check_known_vs_unkno
145
145
EXPECT_TRUE (are_known_ros_args ({" --ros-args" , " -p" , " /foo123:=/bar123" }));
146
146
EXPECT_TRUE (are_known_ros_args ({" --ros-args" , " __params:=file_name.yaml" }));
147
147
148
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" }));
149
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " --remap" }));
150
-
151
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " :=" }));
152
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " foo:=" }));
153
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " :=bar" }));
154
-
155
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -p" }));
156
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " --param" }));
157
-
158
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -p" , " :=" }));
159
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -p" , " foo:=" }));
160
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -p" , " :=bar" }));
161
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " __ns:=" }));
162
-
163
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " __node:=" }));
164
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " __node:=/foo/bar" }));
165
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " __ns:=foo" }));
166
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " :__node:=nodename" }));
167
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " ~:__node:=nodename" }));
168
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " }foo:=/bar" }));
169
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " f oo:=/bar" }));
170
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " foo:=/b ar" }));
171
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " f{oo:=/bar" }));
172
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " foo:=/b}ar" }));
173
-
174
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -p" , " }foo:=/bar" }));
175
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -p" , " f oo:=/bar" }));
176
-
177
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " rostopic://:=rosservice" }));
178
- EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " -r" , " rostopic::=rosservice" }));
148
+ EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " --custom-ros-arg" }));
149
+ EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " __node:=node_name" }));
150
+ EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " old_name:__node:=node_name" }));
151
+ EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " /foo/bar:=bar" }));
152
+ EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " foo:=/bar" }));
179
153
EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " __param:=file_name.yaml" }));
180
154
181
155
// Setting logger level
@@ -194,6 +168,61 @@ TEST_F(CLASSNAME(TestArgumentsFixture, RMW_IMPLEMENTATION), check_known_vs_unkno
194
168
EXPECT_FALSE (are_known_ros_args ({" --ros-args" , " __log_level:=foo" }));
195
169
}
196
170
171
+ bool
172
+ are_valid_ros_args (std::vector<const char *> argv)
173
+ {
174
+ const int argc = static_cast <int >(argv.size ());
175
+ rcl_arguments_t parsed_args = rcl_get_zero_initialized_arguments ();
176
+ rcl_ret_t ret = rcl_parse_arguments (
177
+ argc, argv.data (), rcl_get_default_allocator (), &parsed_args);
178
+ if (RCL_RET_OK != ret) {
179
+ EXPECT_EQ (ret, RCL_RET_INVALID_ROS_ARGS) << rcl_get_error_string ().str ;
180
+ rcl_reset_error ();
181
+ return false ;
182
+ }
183
+ EXPECT_EQ (RCL_RET_OK, rcl_arguments_fini (&parsed_args));
184
+ return true ;
185
+ }
186
+
187
+ TEST_F (CLASSNAME(TestArgumentsFixture, RMW_IMPLEMENTATION), check_valid_vs_invalid_args) {
188
+ EXPECT_TRUE (are_valid_ros_args ({" --ros-args" , " -p" , " foo:=bar" , " -r" , " __node:=node_name" }));
189
+
190
+ // ROS args unknown to rcl are not (necessarily) invalid
191
+ EXPECT_TRUE (are_valid_ros_args ({" --ros-args" , " --custom-ros-arg" }));
192
+
193
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" }));
194
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " --remap" }));
195
+
196
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " :=" }));
197
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " foo:=" }));
198
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " :=bar" }));
199
+
200
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -p" }));
201
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " --param" }));
202
+
203
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -p" , " :=" }));
204
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -p" , " foo:=" }));
205
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -p" , " :=bar" }));
206
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " __ns:=" }));
207
+
208
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " __node:=" }));
209
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " __node:=/foo/bar" }));
210
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " __ns:=foo" }));
211
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " :__node:=nodename" }));
212
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " ~:__node:=nodename" }));
213
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " }foo:=/bar" }));
214
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " f oo:=/bar" }));
215
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " foo:=/b ar" }));
216
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " f{oo:=/bar" }));
217
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " foo:=/b}ar" }));
218
+
219
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -p" , " }foo:=/bar" }));
220
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -p" , " f oo:=/bar" }));
221
+
222
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " rostopic://:=rosservice" }));
223
+ EXPECT_FALSE (are_valid_ros_args ({" --ros-args" , " -r" , " rostopic::=rosservice" }));
224
+ }
225
+
197
226
TEST_F (CLASSNAME(TestArgumentsFixture, RMW_IMPLEMENTATION), test_no_args) {
198
227
rcl_arguments_t parsed_args = rcl_get_zero_initialized_arguments ();
199
228
rcl_ret_t ret = rcl_parse_arguments (0 , NULL , rcl_get_default_allocator (), &parsed_args);
0 commit comments