diff options
| author | Patrick Steinhardt <ps@pks.im> | 2017-06-28 15:42:54 +0200 |
|---|---|---|
| committer | Patrick Steinhardt <ps@pks.im> | 2017-08-16 07:12:38 +0200 |
| commit | 35087f0eeff10efaf2304fa0772e9836a9fd9fc7 (patch) | |
| tree | 6e0953b2b0f227f280ba231aebc092682bf9867d /tests | |
| parent | 3267115fc2f5f69384cc569dcb3a28aadd8305f7 (diff) | |
| download | libgit2-35087f0eeff10efaf2304fa0772e9836a9fd9fc7.tar.gz | |
cmake: create separate CMakeLists.txt for tests
Our CMakeLists.txt is very unwieldy in its current size, spanning more
than 700 lines of code. Furthermore, it has several issues regarding
scoping, where for example some defines, includes, etc. from our test
suite are also applied to our normal library code.
To fix this, we can separate out build instructions for our tests and
move them into their own CMakeLists.txt in the "tests" directory. This
reduced complexity of the root CMakeLists.txt file and fixes the issues
regarding leaking build context from tests into the library.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/CMakeLists.txt | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 000000000..31144c64f --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,66 @@ +FIND_PACKAGE(PythonInterp) + +IF(NOT PYTHONINTERP_FOUND) + MESSAGE(FATAL_ERROR "Could not find a python interpeter, which is needed to build the tests. " + "Make sure python is available, or pass -DBUILD_CLAR=OFF to skip building the tests") +ENDIF() + +SET(CLAR_FIXTURES "${CMAKE_CURRENT_SOURCE_DIR}/resources/") +SET(CLAR_PATH "${CMAKE_CURRENT_SOURCE_DIR}") +ADD_DEFINITIONS(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\") +ADD_DEFINITIONS(-DCLAR_TMPDIR=\"libgit2_tests\") + +INCLUDE_DIRECTORIES(${CLAR_PATH}) +FILE(GLOB_RECURSE SRC_TEST ${CLAR_PATH}/*/*.c ${CLAR_PATH}/*/*.h) +SET(SRC_CLAR "main.c" "clar_libgit2.c" "clar_libgit2_trace.c" "clar_libgit2_timer.c" "clar.c") + +IF(MSVC_IDE) + LIST(APPEND SRC_CLAR "precompiled.c") +ENDIF() + +ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/clar.suite + COMMAND ${PYTHON_EXECUTABLE} generate.py -o "${CMAKE_CURRENT_BINARY_DIR}" -f -xonline -xstress . + DEPENDS ${SRC_TEST} + WORKING_DIRECTORY ${CLAR_PATH} +) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) + +SET_SOURCE_FILES_PROPERTIES( + ${CLAR_PATH}/clar.c + PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/clar.suite) + +ADD_EXECUTABLE(libgit2_clar ${SRC_CLAR} ${SRC_TEST} ${GIT2INTERNAL_OBJECTS}) + +SET_TARGET_PROPERTIES(libgit2_clar PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) + +IF (${CMAKE_VERSION} VERSION_GREATER 2.8.11) + TARGET_INCLUDE_DIRECTORIES(libgit2_clar PRIVATE ../src PUBLIC ../include) +ENDIF() + +TARGET_LINK_LIBRARIES(libgit2_clar ${COREFOUNDATION_DIRS}) +TARGET_LINK_LIBRARIES(libgit2_clar ${SECURITY_DIRS}) +TARGET_LINK_LIBRARIES(libgit2_clar ${SSL_LIBRARIES}) +TARGET_LINK_LIBRARIES(libgit2_clar ${SSH_LIBRARIES}) +TARGET_LINK_LIBRARIES(libgit2_clar ${GSSAPI_LIBRARIES}) +TARGET_LINK_LIBRARIES(libgit2_clar ${ICONV_LIBRARIES}) +TARGET_OS_LIBRARIES(libgit2_clar) +IDE_SPLIT_SOURCES(libgit2_clar) + +IF (MSVC_IDE) + # Precompiled headers + SET_TARGET_PROPERTIES(libgit2_clar PROPERTIES COMPILE_FLAGS "/Yuprecompiled.h /FIprecompiled.h") + SET_SOURCE_FILES_PROPERTIES("precompiled.c" COMPILE_FLAGS "/Ycprecompiled.h") +ENDIF () + +IF (WINHTTP OR OPENSSL_FOUND OR SECURITY_FOUND) + ADD_TEST(libgit2_clar "${CMAKE_BINARY_DIR}/libgit2_clar" -ionline -xclone::local::git_style_unc_paths -xclone::local::standard_unc_paths_are_written_git_style) +ELSE () + ADD_TEST(libgit2_clar "${CMAKE_BINARY_DIR}/libgit2_clar" -v -xclone::local::git_style_unc_paths -xclone::local::standard_unc_paths_are_written_git_style) +ENDIF () + +# Add a test target which runs the cred callback tests, to be +# called after setting the url and user +ADD_TEST(libgit2_clar-cred_callback "${CMAKE_BINARY_DIR}/libgit2_clar" -v -sonline::clone::cred_callback) +ADD_TEST(libgit2_clar-proxy_credentials_in_url "${CMAKE_BINARY_DIR}/libgit2_clar" -v -sonline::clone::proxy_credentials_in_url) +ADD_TEST(libgit2_clar-proxy_credentials_request "${CMAKE_BINARY_DIR}/libgit2_clar" -v -sonline::clone::proxy_credentials_request) |
