Skip to content

Commit

Permalink
support ros2 action type <action name>. (#894)
Browse files Browse the repository at this point in the history
* support `ros2 action type <action name>`.

Signed-off-by: Tomoya.Fujita <[email protected]>

* add review comments.

Signed-off-by: Tomoya Fujita <[email protected]>

---------

Signed-off-by: Tomoya.Fujita <[email protected]>
Signed-off-by: Tomoya Fujita <[email protected]>
  • Loading branch information
fujitatomoya authored Apr 13, 2024
1 parent ce945cd commit 50cfcce
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 1 deletion.
40 changes: 40 additions & 0 deletions ros2action/ros2action/verb/type.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright 2024 Sony Group Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from ros2action.api import action_name_completer
from ros2action.api import get_action_names_and_types
from ros2action.verb import VerbExtension
from ros2cli.node.strategy import NodeStrategy


class TypeVerb(VerbExtension):
"""Print a action's type."""

def add_arguments(self, parser, cli_name):
arg = parser.add_argument(
'action_name',
help="Name of the ROS action to get info (e.g. '/fibonacci')")
arg.completer = action_name_completer

def main(self, *, args):
with NodeStrategy(args) as node:
action_names_and_types = get_action_names_and_types(node=node)

for (action_name, action_types) in action_names_and_types:
if args.action_name == action_name:
for action_type in action_types:
print(action_type)
return 0

return 1
2 changes: 1 addition & 1 deletion ros2action/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@
'ros2action.verb = ros2action.verb:VerbExtension',
],
'ros2action.verb': [
# 'echo = ros2action.verb.echo:EchoVerb',
'info = ros2action.verb.info:InfoVerb',
'list = ros2action.verb.list:ListVerb',
'send_goal = ros2action.verb.send_goal:SendGoalVerb',
'type = ros2action.verb.type:TypeVerb',
],
}
)
10 changes: 10 additions & 0 deletions ros2action/test/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,16 @@ def test_list_count(self):
assert len(command_output_lines) == 1
assert int(command_output_lines[0]) == 1

@launch_testing.markers.retry_on_failure(times=5, delay=1)
def test_type(self):
with self.launch_action_command(arguments=['type', '/fibonacci']) as action_command:
assert action_command.wait_for_shutdown(timeout=10)
assert action_command.exit_code == launch_testing.asserts.EXIT_OK
assert launch_testing.tools.expect_output(
expected_lines=['test_msgs/action/Fibonacci'],
text=action_command.output, strict=True
)

@launch_testing.markers.retry_on_failure(times=5, delay=1)
def test_send_fibonacci_goal(self):
with self.launch_action_command(
Expand Down

0 comments on commit 50cfcce

Please sign in to comment.