aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2019-02-15 12:13:18 +0100
committerAndreas Schneider <asn@samba.org>2019-02-28 12:49:18 +0100
commitdfdc976df864b8289185a5a4b0668544c78ddc2e (patch)
tree85fa695e3e0e3ebdb05fac94f64d1e5166485df1
parent84df0f5485e620bb4cdaa261925ac64e66935ba9 (diff)
downloadnss_wrapper-dfdc976df864b8289185a5a4b0668544c78ddc2e.tar.gz
nss_wrapper-dfdc976df864b8289185a5a4b0668544c78ddc2e.tar.xz
nss_wrapper-dfdc976df864b8289185a5a4b0668544c78ddc2e.zip
cmake: Update AddCMockaTest.cmake
Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org>
-rw-r--r--cmake/Modules/AddCMockaTest.cmake118
-rw-r--r--tests/CMakeLists.txt24
2 files changed, 124 insertions, 18 deletions
diff --git a/cmake/Modules/AddCMockaTest.cmake b/cmake/Modules/AddCMockaTest.cmake
index 6a34e76..2f45e1a 100644
--- a/cmake/Modules/AddCMockaTest.cmake
+++ b/cmake/Modules/AddCMockaTest.cmake
@@ -1,16 +1,120 @@
-# - ADD_CHECK_TEST(test_name test_source linklib1 ... linklibN)
-
+#
# Copyright (c) 2007 Daniel Gollub <dgollub@suse.de>
-# Copyright (c) 2007-2010 Andreas Schneider <asn@cynapses.org>
+# Copyright (c) 2007-2018 Andreas Schneider <asn@cryptomilk.org>
+# Copyright (c) 2018 Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+#.rst:
+# AddCMockaTest
+# -------------
+#
+# This file provides a function to add a test
+#
+# Functions provided
+# ------------------
+#
+# ::
+#
+# add_cmocka_test(target_name
+# SOURCES src1 src2 ... srcN
+# [COMPILE_OPTIONS opt1 opt2 ... optN]
+# [LINK_LIBRARIES lib1 lib2 ... libN]
+# [LINK_OPTIONS lopt1 lop2 .. loptN]
+# )
+#
+# ``target_name``:
+# Required, expects the name of the test which will be used to define a target
+#
+# ``SOURCES``:
+# Required, expects one or more source files names
+#
+# ``COMPILE_OPTIONS``:
+# Optional, expects one or more options to be passed to the compiler
+#
+# ``LINK_LIBRARIES``:
+# Optional, expects one or more libraries to be linked with the test
+# executable.
+#
+# ``LINK_OPTIONS``:
+# Optional, expects one or more options to be passed to the linker
+#
+#
+# Example:
+#
+# .. code-block:: cmake
+#
+# add_cmocka_test(my_test
+# SOURCES my_test.c other_source.c
+# COMPILE_OPTIONS -g -Wall
+# LINK_LIBRARIES mylib
+# LINK_OPTIONS -Wl,--enable-syscall-fixup
+# )
+#
+# Where ``my_test`` is the name of the test, ``my_test.c`` and
+# ``other_source.c`` are sources for the binary, ``-g -Wall`` are compiler
+# options to be used, ``mylib`` is a target of a library to be linked, and
+# ``-Wl,--enable-syscall-fixup`` is an option passed to the linker.
+#
+
enable_testing()
include(CTest)
-function (ADD_CMOCKA_TEST _testName _testSource)
- add_executable(${_testName} ${_testSource})
- target_link_libraries(${_testName} ${ARGN})
- add_test(${_testName} ${CMAKE_CURRENT_BINARY_DIR}/${_testName})
+if (CMAKE_CROSSCOMPILING)
+ if (WIN32)
+ find_program(WINE_EXECUTABLE
+ NAMES wine)
+ set(TARGET_SYSTEM_EMULATOR ${WINE_EXECUTABLE} CACHE INTERNAL "")
+ endif()
+endif()
+
+function(ADD_CMOCKA_TEST _TARGET_NAME)
+
+ set(one_value_arguments
+ )
+
+ set(multi_value_arguments
+ SOURCES
+ COMPILE_OPTIONS
+ LINK_LIBRARIES
+ LINK_OPTIONS
+ )
+
+ cmake_parse_arguments(_add_cmocka_test
+ ""
+ "${one_value_arguments}"
+ "${multi_value_arguments}"
+ ${ARGN}
+ )
+
+ if (NOT DEFINED _add_cmocka_test_SOURCES)
+ message(FATAL_ERROR "No sources provided for target ${_TARGET_NAME}")
+ endif()
+
+ add_executable(${_TARGET_NAME} ${_add_cmocka_test_SOURCES})
+
+ if (DEFINED _add_cmocka_test_COMPILE_OPTIONS)
+ target_compile_options(${_TARGET_NAME}
+ PRIVATE ${_add_cmocka_test_COMPILE_OPTIONS}
+ )
+ endif()
+
+ if (DEFINED _add_cmocka_test_LINK_LIBRARIES)
+ target_link_libraries(${_TARGET_NAME}
+ PRIVATE ${_add_cmocka_test_LINK_LIBRARIES}
+ )
+ endif()
+
+ if (DEFINED _add_cmocka_test_LINK_OPTIONS)
+ set_target_properties(${_TARGET_NAME}
+ PROPERTIES LINK_FLAGS
+ ${_add_cmocka_test_LINK_OPTIONS}
+ )
+ endif()
+
+ add_test(${_TARGET_NAME}
+ ${TARGET_SYSTEM_EMULATOR} ${_TARGET_NAME}
+ )
+
endfunction (ADD_CMOCKA_TEST)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index b145725..151faf2 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -73,10 +73,11 @@ function(ADD_CMOCKA_TEST_ENVIRONMENT _TEST_NAME)
ENVIRONMENT "${TORTURE_ENVIRONMENT}")
endfunction()
foreach(_NWRAP_TEST ${NWRAP_TESTS})
- add_cmocka_test(${_NWRAP_TEST} ${_NWRAP_TEST}.c ${TESTSUITE_LIBRARIES})
- target_compile_options(${_NWRAP_TEST}
- PRIVATE
- ${DEFAULT_C_COMPILE_FLAGS})
+ add_cmocka_test(${_NWRAP_TEST}
+ SOURCES ${_NWRAP_TEST}.c
+ COMPILE_OPTIONS ${DEFAULT_C_COMPILE_FLAGS}
+ LINK_LIBRARIES ${TESTSUITE_LIBRARIES}
+ LINK_OPTIONS ${DEFAULT_LINK_FLAGS})
if (BSD)
target_compile_options(${_NWRAP_TEST}
PRIVATE
@@ -87,17 +88,18 @@ endforeach()
if (HAVE_SHADOW_H)
# This is needed to check the hash in tests/shadow.in
- target_link_libraries(test_shadow crypt)
+ target_link_libraries(test_shadow PRIVATE crypt)
endif (HAVE_SHADOW_H)
-target_link_libraries(test_nwrap_vector ${CMAKE_THREAD_LIBS_INIT})
-target_link_libraries(test_gethostby_name_addr ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(test_nwrap_vector PRIVATE ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(test_gethostby_name_addr PRIVATE ${CMAKE_THREAD_LIBS_INIT})
# Test nwrap without wrapping so the libc functions are called
-add_cmocka_test(test_nwrap_disabled test_nwrap_disabled.c ${TESTSUITE_LIBRARIES})
-target_compile_options(test_nwrap_disabled
- PRIVATE
- ${DEFAULT_C_COMPILE_FLAGS})
+add_cmocka_test(test_nwrap_disabled
+ SOURCES test_nwrap_disabled.c
+ COMPILE_OPTIONS ${DEFAULT_C_COMPILE_FLAGS}
+ LINK_LIBRARIES ${TESTSUITE_LIBRARIES}
+ LINK_OPTIONS ${DEFAULT_LINK_FLAGS})
set_property(
TEST
test_nwrap_disabled