Skip to content

Commit

Permalink
Merge pull request #2 from fmrico/xunit_tests
Browse files Browse the repository at this point in the history
Add function to include xUnit.NET tests
  • Loading branch information
theseankelly authored Apr 27, 2020
2 parents 100d92b + 96099b0 commit cb35d70
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 11 deletions.
44 changes: 44 additions & 0 deletions cmake/Modules/FindDotNETExtra.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,50 @@ 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")
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
${_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}
${XUNIT_INCLUDE_REFERENCES}
)

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()

function(install_dotnet _TARGET_NAME)
get_target_property(_target_executable ${_TARGET_NAME} EXECUTABLE)
get_target_property(_target_path ${_TARGET_NAME} OUTPUT_PATH)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<Project>
<PropertyGroup Condition="$(MSBuildProjectName.Contains('dotnetcore'))">
<BaseIntermediateOutputPath>obj_core\</BaseIntermediateOutputPath>
<BaseIntermediateOutputPath>@CSHARP_BUILDER_OUTPUT_NAME@\</BaseIntermediateOutputPath>
</PropertyGroup>
</Project>
</Project>
19 changes: 10 additions & 9 deletions cmake/Modules/dotnet/UseCSharpProjectBuilder.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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"
""
Expand Down Expand Up @@ -41,10 +41,10 @@ function(csharp_add_project name)
list(GET PACKAGE_ID 1 PACKAGE_VERSION)
list(APPEND packages "<PackageReference;Include=\\\"${PACKAGE_NAME}\\\";Version=\\\"${PACKAGE_VERSION}\\\";/>")
list(APPEND legacy_packages "<package;id=\\\"${PACKAGE_NAME}\\\";version=\\\"${PACKAGE_VERSION}\\\";/>")
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 "<Reference;Include=\\\"${hint_path}\\\";></Reference>")

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 "<Import;Project=\\\"${target_path}\\\";Condition=\\\"Exists('${target_path}')\\\";/>")
endforeach()

Expand Down Expand Up @@ -154,26 +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}
-DCONFIG_INPUT_FILE="${dotnet_cmake_module_DIR}/Modules/dotnet/Directory.Build.props"
-DCONFIG_OUTPUT_FILE="${CURRENT_TARGET_BINARY_DIR}/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}/${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}
)

Expand Down

0 comments on commit cb35d70

Please sign in to comment.