Skip to content

Commit

Permalink
Migrate rcl tests to new launch_testing API.
Browse files Browse the repository at this point in the history
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
  • Loading branch information
hidmic committed Apr 3, 2019
1 parent bfce883 commit 0d7eb8d
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 19 deletions.
1 change: 1 addition & 0 deletions rcl/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
<test_depend>rmw_implementation_cmake</test_depend>
<test_depend>launch</test_depend>
<test_depend>launch_testing</test_depend>
<test_depend>launch_testing_ament_cmake</test_depend>
<test_depend>osrf_testing_tools_cpp</test_depend>
<test_depend>test_msgs</test_depend>

Expand Down
8 changes: 7 additions & 1 deletion rcl/test/cmake/rcl_add_custom_launch_test.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
if(rcl_add_custom_launch_test_INCLUDED)
return()
endif()

find_package(launch_testing_ament_cmake REQUIRED)
set(rcl_add_custom_launch_test_INCLUDED TRUE)

macro(rcl_add_custom_launch_test test_name executable1 executable2)
Expand All @@ -32,7 +34,11 @@ macro(rcl_add_custom_launch_test test_name executable1 executable2)
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/test/${test_name}${target_suffix}_$<CONFIG>.py"
INPUT "${CMAKE_CURRENT_BINARY_DIR}/${test_name}${target_suffix}.py.configure"
)
ament_add_pytest_test(${test_name}${target_suffix} "${CMAKE_CURRENT_BINARY_DIR}/test/${test_name}${target_suffix}_$<CONFIG>.py" ${ARGN})
add_launch_test(
"${CMAKE_CURRENT_BINARY_DIR}/test/${test_name}${target_suffix}_$<CONFIG>.py"
TARGET ${test_name}${target_suffix}
${ARGN}
)
if(TEST ${test_name}${target_suffix})
set_tests_properties(${test_name}${target_suffix} PROPERTIES DEPENDS "${executable1}${target_suffix} ${executable2}${target_suffix}")
endif()
Expand Down
50 changes: 32 additions & 18 deletions rcl/test/rcl/test_two_executables.py.in
Original file line number Diff line number Diff line change
@@ -1,35 +1,49 @@
# generated from rcl/test/test_two_executables.py.in

import os

from launch import LaunchDescription
from launch import LaunchService
from launch.actions import ExecuteProcess
from launch_testing.legacy import LaunchTestService
from launch.actions import OpaqueFunction

import launch_testing
import launch_testing.asserts

import unittest


def @TEST_NAME@():
launch_test = LaunchTestService()
def generate_test_description(ready_fn):
launch_description = LaunchDescription()

launch_test.add_fixture_action(
launch_description, ExecuteProcess(
launch_description.add_action(
ExecuteProcess(
cmd=['@TEST_EXECUTABLE1@'],
name='@TEST_EXECUTABLE1_NAME@',
), exit_allowed=True
)
)

launch_test.add_test_action(
launch_description, ExecuteProcess(
cmd=['@TEST_EXECUTABLE2@', '@TEST_EXECUTABLE1_NAME@'],
name='@TEST_EXECUTABLE2_NAME@',
)
executable_under_test = ExecuteProcess(
cmd=['@TEST_EXECUTABLE2@', '@TEST_EXECUTABLE1_NAME@'],
name='@TEST_EXECUTABLE2_NAME@',
)
launch_description.add_action(executable_under_test)

launch_description.add_action(
OpaqueFunction(function=lambda context: ready_fn())
)
return launch_description, locals()


class TestTwoExecutables(unittest.TestCase):

launch_service = LaunchService()
launch_service.include_launch_description(launch_description)
rc = launch_test.run(launch_service)
def @TEST_NAME@(self, executable_under_test):
"""Test that the executable under test terminates after a finite amount of time."""
self.proc_info.assertWaitForShutdown(process=executable_under_test, timeout=10)

assert rc == 0, "The launch file failed with exit code '" + str(rc) + "'. "

@launch_testing.post_shutdown_test()
class TestTwoExecutablesAfterShutdown(unittest.TestCase):

if __name__ == '__main__':
@TEST_NAME@()
def @TEST_NAME@(self, executable_under_test):
"""Test that the executable under test finished cleanly."""
launch_testing.asserts.assertExitCodes(self.proc_info, process=executable_under_test)

0 comments on commit 0d7eb8d

Please sign in to comment.