Add support for unit tests
This commit is contained in:
parent
d3ce4a8765
commit
a9526ae663
@ -6,5 +6,6 @@ set(OVNI_TEST_BUILD_DIR "${CMAKE_BINARY_DIR}/test")
|
|||||||
|
|
||||||
include(macros.cmake)
|
include(macros.cmake)
|
||||||
|
|
||||||
|
add_subdirectory(unit)
|
||||||
add_subdirectory(emu)
|
add_subdirectory(emu)
|
||||||
add_subdirectory(rt)
|
add_subdirectory(rt)
|
||||||
|
@ -3,8 +3,52 @@
|
|||||||
|
|
||||||
include(CMakeParseArguments)
|
include(CMakeParseArguments)
|
||||||
|
|
||||||
|
function(unit_test source)
|
||||||
|
set(switches "")
|
||||||
|
set(single "" NAME)
|
||||||
|
set(multi "")
|
||||||
|
|
||||||
|
cmake_parse_arguments(
|
||||||
|
OVNI_TEST "${switches}" "${single}" "${multi}" ${ARGN})
|
||||||
|
|
||||||
|
if(OVNI_TEST_NAME)
|
||||||
|
set(test_name "${OVNI_TEST_NAME}")
|
||||||
|
else()
|
||||||
|
set(test_name "${source}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Compute the test name from the source and path
|
||||||
|
cmake_path(RELATIVE_PATH CMAKE_CURRENT_SOURCE_DIR
|
||||||
|
BASE_DIRECTORY "${OVNI_TEST_SOURCE_DIR}"
|
||||||
|
OUTPUT_VARIABLE name_prefix)
|
||||||
|
set(full_path "${name_prefix}/${test_name}")
|
||||||
|
string(REGEX REPLACE "\.c$" "" full_path_noext "${full_path}")
|
||||||
|
string(REPLACE "/" "-" name "${full_path_noext}")
|
||||||
|
|
||||||
|
set(OVNI_TEST_NAME ${name})
|
||||||
|
set(OVNI_TEST_NAME ${OVNI_TEST_NAME} PARENT_SCOPE)
|
||||||
|
set(OVNI_TEST_SOURCE ${source})
|
||||||
|
|
||||||
|
include_directories(
|
||||||
|
"${CMAKE_SOURCE_DIR}/src/include"
|
||||||
|
"${CMAKE_SOURCE_DIR}/src"
|
||||||
|
"${CMAKE_SOURCE_DIR}/include"
|
||||||
|
)
|
||||||
|
add_executable("${OVNI_TEST_NAME}" "${OVNI_TEST_SOURCE}")
|
||||||
|
target_link_libraries("${OVNI_TEST_NAME}" PRIVATE ovni emu)
|
||||||
|
|
||||||
|
add_test(NAME "${OVNI_TEST_NAME}"
|
||||||
|
COMMAND "${OVNI_TEST_NAME}"
|
||||||
|
WORKING_DIRECTORY "${OVNI_TEST_BUILD_DIR}")
|
||||||
|
|
||||||
|
set_tests_properties("${OVNI_TEST_NAME}"
|
||||||
|
PROPERTIES
|
||||||
|
RUN_SERIAL TRUE
|
||||||
|
WORKING_DIRECTORY "${OVNI_TEST_BUILD_DIR}")
|
||||||
|
endfunction(unit_test)
|
||||||
|
|
||||||
function(ovni_test source)
|
function(ovni_test source)
|
||||||
set(switches MP SHOULD_FAIL SORT)
|
set(switches MP SHOULD_FAIL SORT UNIT)
|
||||||
set(single NPROC REGEX NAME)
|
set(single NPROC REGEX NAME)
|
||||||
set(multi ENV)
|
set(multi ENV)
|
||||||
|
|
||||||
|
4
test/unit/CMakeLists.txt
Normal file
4
test/unit/CMakeLists.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Copyright (c) 2022 Barcelona Supercomputing Center (BSC)
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
# Example: unit_test(abc.c)
|
Loading…
Reference in New Issue
Block a user