From abb494c599711c0823ee1134bee3185ac340c38f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Mart=C3=ADn=20Rico?= Date: Fri, 15 Feb 2019 08:28:41 +0100 Subject: [PATCH 1/7] Add function to include xUnit.NET tests --- cmake/Modules/FindDotNETExtra.cmake | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/cmake/Modules/FindDotNETExtra.cmake b/cmake/Modules/FindDotNETExtra.cmake index 4fa336f..64fecd5 100644 --- a/cmake/Modules/FindDotNETExtra.cmake +++ b/cmake/Modules/FindDotNETExtra.cmake @@ -58,6 +58,29 @@ function(add_dotnet_executable _TARGET_NAME) ) endfunction() +function(add_dotnet_test _TARGET_NAME) + cmake_parse_arguments(_add_dotnet_test + "" + "" + "SOURCES;INCLUDE_DLLS;INCLUDE_NUPKGS;INCLUDE_REFERENCES" + ${ARGN} + ) + + set(CSHARP_TARGET_FRAMEWORK "netcoreapp2.0") + csharp_add_project(${_TARGET_NAME} + EXECUTABLE + SOURCES + ${_add_dotnet_test_SOURCES} + ${_add_dotnet_test_UNPARSED_ARGUMENTS} + INCLUDE_DLLS + ${_add_dotnet_test_INCLUDE_DLLS} + INCLUDE_NUPKGS + ${_add_dotnet_test_INCLUDE_NUPKGS} + INCLUDE_REFERENCES + ${_add_dotnet_test_INCLUDE_REFERENCES} + ) +endfunction() + function(install_dotnet _TARGET_NAME) get_target_property(_target_executable ${_TARGET_NAME} EXECUTABLE) get_target_property(_target_path ${_TARGET_NAME} OUTPUT_PATH) From 9b65b7152a275d1d045999e04f7cc1a44880bd9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Mart=C3=ADn=20Rico?= Date: Fri, 1 Mar 2019 20:30:31 +0100 Subject: [PATCH 2/7] Several C# projects in same package; Test integration with ament MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Francisco Martín Rico --- cmake/Modules/FindDotNETExtra.cmake | 3 +++ cmake/Modules/dotnet/Directory.Build.props | 5 ----- cmake/Modules/dotnet/Directory.Build.props.in | 5 +++++ cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake | 13 +++++++++++-- 4 files changed, 19 insertions(+), 7 deletions(-) delete mode 100644 cmake/Modules/dotnet/Directory.Build.props create mode 100644 cmake/Modules/dotnet/Directory.Build.props.in diff --git a/cmake/Modules/FindDotNETExtra.cmake b/cmake/Modules/FindDotNETExtra.cmake index 64fecd5..d3d07e7 100644 --- a/cmake/Modules/FindDotNETExtra.cmake +++ b/cmake/Modules/FindDotNETExtra.cmake @@ -78,7 +78,10 @@ function(add_dotnet_test _TARGET_NAME) ${_add_dotnet_test_INCLUDE_NUPKGS} INCLUDE_REFERENCES ${_add_dotnet_test_INCLUDE_REFERENCES} + TEST_DLL + 1 ) + endfunction() function(install_dotnet _TARGET_NAME) diff --git a/cmake/Modules/dotnet/Directory.Build.props b/cmake/Modules/dotnet/Directory.Build.props deleted file mode 100644 index 84b9533..0000000 --- a/cmake/Modules/dotnet/Directory.Build.props +++ /dev/null @@ -1,5 +0,0 @@ - - - obj_core\ - - \ No newline at end of file diff --git a/cmake/Modules/dotnet/Directory.Build.props.in b/cmake/Modules/dotnet/Directory.Build.props.in new file mode 100644 index 0000000..332d794 --- /dev/null +++ b/cmake/Modules/dotnet/Directory.Build.props.in @@ -0,0 +1,5 @@ + + + @CSHARP_BUILDER_OUTPUT_NAME@_obj_core\ + + diff --git a/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake b/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake index c25e3e8..80a6dae 100644 --- a/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake +++ b/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake @@ -15,7 +15,7 @@ function(csharp_add_project name) cmake_parse_arguments(_csharp_add_project "EXECUTABLE" "" - "SOURCES;INCLUDE_DLLS;INCLUDE_NUPKGS;INCLUDE_REFERENCES" + "SOURCES;INCLUDE_DLLS;INCLUDE_NUPKGS;INCLUDE_REFERENCES;TEST_DLL" ${ARGN} ) @@ -164,7 +164,8 @@ function(csharp_add_project name) -P ${dotnet_cmake_module_DIR}/ConfigureFile.cmake COMMAND ${CMAKE_COMMAND} - -DCONFIG_INPUT_FILE="${dotnet_cmake_module_DIR}/Modules/dotnet/Directory.Build.props" + -DCSHARP_BUILDER_OUTPUT_NAME="${name}${CSBUILD_OUTPUT_SUFFIX}" + -DCONFIG_INPUT_FILE="${dotnet_cmake_module_DIR}/Modules/dotnet/Directory.Build.props.in" -DCONFIG_OUTPUT_FILE="${CURRENT_TARGET_BINARY_DIR}/Directory.Build.props" -P ${dotnet_cmake_module_DIR}/ConfigureFile.cmake @@ -177,6 +178,14 @@ function(csharp_add_project name) DEPENDS ${sources_dep} ) + if (${_csharp_add_project_TEST_DLL}) + ament_add_test( + ${name}_test + GENERATE_RESULT_FOR_RETURN_CODE_ZERO + COMMAND dotnet test "${CURRENT_TARGET_BINARY_DIR}/${CSBUILD_${name}_CSPROJ}" + ) + endif() + set(DOTNET_OUTPUT_PATH ${CSHARP_BUILDER_OUTPUT_PATH}/${CSHARP_TARGET_FRAMEWORK}/${DOTNET_CORE_RUNTIME}/publish/) set_target_properties(${name} From bb0def83f1f85aaabae50203d8fa2b646bfb7df8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Mart=C3=ADn=20Rico?= Date: Wed, 20 Mar 2019 06:49:35 +0100 Subject: [PATCH 3/7] Fix concurrency problem when building several projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Francisco Martín Rico --- cmake/Modules/dotnet/Directory.Build.props.in | 2 +- .../dotnet/UseCSharpProjectBuilder.cmake | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cmake/Modules/dotnet/Directory.Build.props.in b/cmake/Modules/dotnet/Directory.Build.props.in index 332d794..56e8c6c 100644 --- a/cmake/Modules/dotnet/Directory.Build.props.in +++ b/cmake/Modules/dotnet/Directory.Build.props.in @@ -1,5 +1,5 @@ - @CSHARP_BUILDER_OUTPUT_NAME@_obj_core\ + @CSHARP_BUILDER_OUTPUT_NAME@\ diff --git a/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake b/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake index 80a6dae..9916d09 100644 --- a/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake +++ b/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake @@ -11,7 +11,7 @@ function(csharp_add_project name) set(CURRENT_TARGET_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}") endif() set(CSBUILD_PROJECT_DIR "") - file(MAKE_DIRECTORY ${CURRENT_TARGET_BINARY_DIR}) + file(MAKE_DIRECTORY ${CURRENT_TARGET_BINARY_DIR}/${name}) cmake_parse_arguments(_csharp_add_project "EXECUTABLE" "" @@ -41,10 +41,10 @@ function(csharp_add_project name) list(GET PACKAGE_ID 1 PACKAGE_VERSION) list(APPEND packages "") list(APPEND legacy_packages "") - file(TO_NATIVE_PATH "${CURRENT_TARGET_BINARY_DIR}/${PACKAGE_NAME}.${PACKAGE_VERSION}/lib/**/*.dll" hint_path) + file(TO_NATIVE_PATH "${CURRENT_TARGET_BINARY_DIR}/${name}/${PACKAGE_NAME}.${PACKAGE_VERSION}/lib/**/*.dll" hint_path) list(APPEND refs "") - file(TO_NATIVE_PATH "${CURRENT_TARGET_BINARY_DIR}/${PACKAGE_NAME}.${PACKAGE_VERSION}/build/${PACKAGE_NAME}.targets" target_path) + file(TO_NATIVE_PATH "${CURRENT_TARGET_BINARY_DIR}/${name}/${PACKAGE_NAME}.${PACKAGE_VERSION}/build/${PACKAGE_NAME}.targets" target_path) list(APPEND imports "") endforeach() @@ -154,27 +154,27 @@ function(csharp_add_project name) -DMSBUILD_TOOLSET="${MSBUILD_TOOLSET}" -DCSHARP_IMPORTS="${CSHARP_IMPORTS}" -DCONFIG_INPUT_FILE="${CSBUILD_CSPROJ_IN}" - -DCONFIG_OUTPUT_FILE="${CURRENT_TARGET_BINARY_DIR}/${CSBUILD_${name}_CSPROJ}" + -DCONFIG_OUTPUT_FILE="${CURRENT_TARGET_BINARY_DIR}/${name}/${CSBUILD_${name}_CSPROJ}" -P ${dotnet_cmake_module_DIR}/ConfigureFile.cmake COMMAND ${CMAKE_COMMAND} -DCSHARP_PACKAGE_REFERENCES="${CSHARP_LEGACY_PACKAGE_REFERENCES}" -DCONFIG_INPUT_FILE="${dotnet_cmake_module_DIR}/Modules/dotnet/packages.config.in" - -DCONFIG_OUTPUT_FILE="${CURRENT_TARGET_BINARY_DIR}/packages.config" + -DCONFIG_OUTPUT_FILE="${CURRENT_TARGET_BINARY_DIR}/${name}/packages.config" -P ${dotnet_cmake_module_DIR}/ConfigureFile.cmake COMMAND ${CMAKE_COMMAND} -DCSHARP_BUILDER_OUTPUT_NAME="${name}${CSBUILD_OUTPUT_SUFFIX}" -DCONFIG_INPUT_FILE="${dotnet_cmake_module_DIR}/Modules/dotnet/Directory.Build.props.in" - -DCONFIG_OUTPUT_FILE="${CURRENT_TARGET_BINARY_DIR}/Directory.Build.props" + -DCONFIG_OUTPUT_FILE="${CURRENT_TARGET_BINARY_DIR}/${name}/${name}$/Directory.Build.props" -P ${dotnet_cmake_module_DIR}/ConfigureFile.cmake COMMAND ${RESTORE_CMD} COMMAND ${CSBUILD_EXECUTABLE} ${CSBUILD_RESTORE_FLAGS} ${CSBUILD_${name}_CSPROJ} COMMAND ${CSBUILD_EXECUTABLE} ${CSBUILD_BUILD_FLAGS} ${CSBUILD_${name}_CSPROJ} - WORKING_DIRECTORY ${CURRENT_TARGET_BINARY_DIR} - COMMENT "${RESTORE_CMD};${CSBUILD_EXECUTABLE} ${CSBUILD_RESTORE_FLAGS} ${CSBUILD_${name}_CSPROJ}; ${CSBUILD_EXECUTABLE} ${CSBUILD_BUILD_FLAGS} ${CSBUILD_${name}_CSPROJ} -> ${CURRENT_TARGET_BINARY_DIR}" + WORKING_DIRECTORY ${CURRENT_TARGET_BINARY_DIR}/${name} + COMMENT "${RESTORE_CMD};${CSBUILD_EXECUTABLE} ${CSBUILD_RESTORE_FLAGS} ${CSBUILD_${name}_CSPROJ}; ${CSBUILD_EXECUTABLE} ${CSBUILD_BUILD_FLAGS} ${CSBUILD_${name}_CSPROJ} -> ${CURRENT_TARGET_BINARY_DIR}/${name}" DEPENDS ${sources_dep} ) @@ -182,7 +182,7 @@ function(csharp_add_project name) ament_add_test( ${name}_test GENERATE_RESULT_FOR_RETURN_CODE_ZERO - COMMAND dotnet test "${CURRENT_TARGET_BINARY_DIR}/${CSBUILD_${name}_CSPROJ}" + COMMAND dotnet test "${CURRENT_TARGET_BINARY_DIR}/${name}/${CSBUILD_${name}_CSPROJ}" ) endif() From 57d37d461cc498d0ebeb2f864fb859865f7593b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Mart=C3=ADn=20Rico?= Date: Wed, 20 Mar 2019 15:46:48 +0100 Subject: [PATCH 4/7] Moving dotnet-specific cmake code to FindDotNETExtra.cmake MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Francisco Martín Rico --- cmake/Modules/FindDotNETExtra.cmake | 15 +++++++++++++-- .../Modules/dotnet/UseCSharpProjectBuilder.cmake | 10 +--------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/cmake/Modules/FindDotNETExtra.cmake b/cmake/Modules/FindDotNETExtra.cmake index d3d07e7..7c45c12 100644 --- a/cmake/Modules/FindDotNETExtra.cmake +++ b/cmake/Modules/FindDotNETExtra.cmake @@ -78,8 +78,19 @@ function(add_dotnet_test _TARGET_NAME) ${_add_dotnet_test_INCLUDE_NUPKGS} INCLUDE_REFERENCES ${_add_dotnet_test_INCLUDE_REFERENCES} - TEST_DLL - 1 + ) + + if(CSBUILD_PROJECT_DIR) + set(CURRENT_TARGET_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/${CSBUILD_PROJECT_DIR}") + else() + set(CURRENT_TARGET_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}") + endif() + + ament_add_test( + ${name}_test + GENERATE_RESULT_FOR_RETURN_CODE_ZERO + WORKING_DIRECTORY ${CURRENT_TARGET_BINARY_DIR}/${_TARGET_NAME} + COMMAND dotnet test "${CURRENT_TARGET_BINARY_DIR}/${_TARGET_NAME}/${_TARGET_NAME}_${CSBUILD_CSPROJ}" ) endfunction() diff --git a/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake b/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake index 9916d09..72d5115 100644 --- a/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake +++ b/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake @@ -15,7 +15,7 @@ function(csharp_add_project name) cmake_parse_arguments(_csharp_add_project "EXECUTABLE" "" - "SOURCES;INCLUDE_DLLS;INCLUDE_NUPKGS;INCLUDE_REFERENCES;TEST_DLL" + "SOURCES;INCLUDE_DLLS;INCLUDE_NUPKGS;INCLUDE_REFERENCES" ${ARGN} ) @@ -178,14 +178,6 @@ function(csharp_add_project name) DEPENDS ${sources_dep} ) - if (${_csharp_add_project_TEST_DLL}) - ament_add_test( - ${name}_test - GENERATE_RESULT_FOR_RETURN_CODE_ZERO - COMMAND dotnet test "${CURRENT_TARGET_BINARY_DIR}/${name}/${CSBUILD_${name}_CSPROJ}" - ) - endif() - set(DOTNET_OUTPUT_PATH ${CSHARP_BUILDER_OUTPUT_PATH}/${CSHARP_TARGET_FRAMEWORK}/${DOTNET_CORE_RUNTIME}/publish/) set_target_properties(${name} From 6148cf6f2a0220a2765f3a373644a4a56206b103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Mart=C3=ADn=20Rico?= Date: Wed, 20 Mar 2019 15:53:22 +0100 Subject: [PATCH 5/7] Include xUnit references in add_dotnet_test function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Francisco Martín Rico --- cmake/Modules/FindDotNETExtra.cmake | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cmake/Modules/FindDotNETExtra.cmake b/cmake/Modules/FindDotNETExtra.cmake index 7c45c12..7395cda 100644 --- a/cmake/Modules/FindDotNETExtra.cmake +++ b/cmake/Modules/FindDotNETExtra.cmake @@ -67,6 +67,12 @@ function(add_dotnet_test _TARGET_NAME) ) set(CSHARP_TARGET_FRAMEWORK "netcoreapp2.0") + set(XUNIT_INCLUDE_REFERENCES + "Microsoft.NET.Test.Sdk=15.9.0" + "xunit=2.4.1" + "xunit.runner.visualstudio=2.4.1" + ) + csharp_add_project(${_TARGET_NAME} EXECUTABLE SOURCES @@ -78,6 +84,7 @@ function(add_dotnet_test _TARGET_NAME) ${_add_dotnet_test_INCLUDE_NUPKGS} INCLUDE_REFERENCES ${_add_dotnet_test_INCLUDE_REFERENCES} + ${XUNIT_INCLUDE_REFERENCES} ) if(CSBUILD_PROJECT_DIR) From e10938bf468c3325fb981c443150a12916dd9249 Mon Sep 17 00:00:00 2001 From: Francisco Martin Rico Date: Sun, 26 Apr 2020 20:02:14 +0200 Subject: [PATCH 6/7] Fixed typo in path Signed-off-by: Francisco Martin Rico --- cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake b/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake index 72d5115..f3b2f81 100644 --- a/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake +++ b/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake @@ -166,7 +166,7 @@ function(csharp_add_project name) COMMAND ${CMAKE_COMMAND} -DCSHARP_BUILDER_OUTPUT_NAME="${name}${CSBUILD_OUTPUT_SUFFIX}" -DCONFIG_INPUT_FILE="${dotnet_cmake_module_DIR}/Modules/dotnet/Directory.Build.props.in" - -DCONFIG_OUTPUT_FILE="${CURRENT_TARGET_BINARY_DIR}/${name}/${name}$/Directory.Build.props" + -DCONFIG_OUTPUT_FILE="${CURRENT_TARGET_BINARY_DIR}/${name}/${name}/Directory.Build.props" -P ${dotnet_cmake_module_DIR}/ConfigureFile.cmake COMMAND ${RESTORE_CMD} From 96099b01fb58c2ea3bb668f16bb2a9ec0c4b8d8c Mon Sep 17 00:00:00 2001 From: Francisco Martin Rico Date: Sun, 26 Apr 2020 21:00:05 +0200 Subject: [PATCH 7/7] Removing duplicate nested dir Signed-off-by: Francisco Martin Rico --- cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake b/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake index f3b2f81..523c0a7 100644 --- a/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake +++ b/cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake @@ -166,7 +166,7 @@ function(csharp_add_project name) COMMAND ${CMAKE_COMMAND} -DCSHARP_BUILDER_OUTPUT_NAME="${name}${CSBUILD_OUTPUT_SUFFIX}" -DCONFIG_INPUT_FILE="${dotnet_cmake_module_DIR}/Modules/dotnet/Directory.Build.props.in" - -DCONFIG_OUTPUT_FILE="${CURRENT_TARGET_BINARY_DIR}/${name}/${name}/Directory.Build.props" + -DCONFIG_OUTPUT_FILE="${CURRENT_TARGET_BINARY_DIR}/${name}/Directory.Build.props" -P ${dotnet_cmake_module_DIR}/ConfigureFile.cmake COMMAND ${RESTORE_CMD}