From 211b08d307f9104fe982fa13714432f7d52a2d75 Mon Sep 17 00:00:00 2001 From: Michel Hidalgo Date: Mon, 1 Apr 2019 12:23:58 -0300 Subject: [PATCH] Migrate rcl tests to new launch_testing API. Signed-off-by: Michel Hidalgo --- rcl/package.xml | 1 + .../cmake/rcl_add_custom_launch_test.cmake | 8 ++- rcl/test/rcl/test_two_executables.py.in | 50 ++++++++++++------- 3 files changed, 40 insertions(+), 19 deletions(-) diff --git a/rcl/package.xml b/rcl/package.xml index cae0e9a61..db39a3a08 100644 --- a/rcl/package.xml +++ b/rcl/package.xml @@ -38,6 +38,7 @@ rmw_implementation_cmake launch launch_testing + launch_testing_ament_cmake osrf_testing_tools_cpp test_msgs diff --git a/rcl/test/cmake/rcl_add_custom_launch_test.cmake b/rcl/test/cmake/rcl_add_custom_launch_test.cmake index 28553464d..d4d2e224d 100644 --- a/rcl/test/cmake/rcl_add_custom_launch_test.cmake +++ b/rcl/test/cmake/rcl_add_custom_launch_test.cmake @@ -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) @@ -32,7 +34,11 @@ macro(rcl_add_custom_launch_test test_name executable1 executable2) OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/test/${test_name}${target_suffix}_$.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}_$.py" ${ARGN}) + add_launch_test( + "${CMAKE_CURRENT_BINARY_DIR}/test/${test_name}${target_suffix}_$.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() diff --git a/rcl/test/rcl/test_two_executables.py.in b/rcl/test/rcl/test_two_executables.py.in index 76457f952..bc1615cce 100644 --- a/rcl/test/rcl/test_two_executables.py.in +++ b/rcl/test/rcl/test_two_executables.py.in @@ -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)