File: kdepim_add_gpg_crypto_test.cmake

package info (click to toggle)
merkuro 24.12.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 7,408 kB
  • sloc: cpp: 14,285; xml: 1,334; javascript: 280; makefile: 8; sh: 3
file content (168 lines) | stat: -rw-r--r-- 7,846 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# SPDX-FileCopyrightText: 2013 Sandro Knauß <mail@sandroknauss.de>
#
# SPDX-License-Identifier: BSD-3-Clause

set(MIMETREEPARSERRELPATH src/mail/mimetreeparser)
set(GNUPGHOME ${CMAKE_BINARY_DIR}/${MIMETREEPARSERRELPATH}/tests/gnupg_home)
add_definitions(-DGNUPGHOME="${GNUPGHOME}")

macro (ADD_GPG_CRYPTO_TEST _target _testname)
   if (UNIX)
      if (APPLE)
         set(_library_path_variable "DYLD_LIBRARY_PATH")
      elseif (CYGWIN)
         set(_library_path_variable "PATH")
      else (APPLE)
         set(_library_path_variable "LD_LIBRARY_PATH")
      endif (APPLE)

      if (APPLE)
         # DYLD_LIBRARY_PATH does not work like LD_LIBRARY_PATH
         # OSX already has the RPATH in libraries and executables, putting runtime directories in
         # DYLD_LIBRARY_PATH actually breaks things
         set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/")
      else (APPLE)
         set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/:${LIB_INSTALL_DIR}:${QT_LIBRARY_DIR}")
      endif (APPLE)
      set(_executable "$<TARGET_FILE:${_target}>")

      # use add_custom_target() to have the sh-wrapper generated during build time instead of cmake time
      add_custom_command(TARGET ${_target} POST_BUILD
        COMMAND ${CMAKE_COMMAND}
        -D_filename=${_executable}.shell -D_library_path_variable=${_library_path_variable}
        -D_ld_library_path="${_ld_library_path}" -D_executable=$<TARGET_FILE:${_target}>
        -D_gnupghome="${GNUPGHOME}"
        -P ${CMAKE_SOURCE_DIR}/cmake/modules/kdepim_generate_crypto_test_wrapper.cmake
      )

      set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${_executable}.shell" )
      add_test(NAME ${_testname} COMMAND ${_executable}.shell)

   else (UNIX)
      # under windows, set the property WRAPPER_SCRIPT just to the name of the executable
      # maybe later this will change to a generated batch file (for setting the PATH so that the Qt libs are found)
      set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}\;${LIB_INSTALL_DIR}\;${QT_LIBRARY_DIR}")
      set(_executable "$<TARGET_FILE:${_target}>")

      # use add_custom_target() to have the batch-file-wrapper generated during build time instead of cmake time
      add_custom_command(TARGET ${_target} POST_BUILD
         COMMAND ${CMAKE_COMMAND}
         -D_filename="${_executable}.bat"
         -D_ld_library_path="${_ld_library_path}" -D_executable="${_executable}"
         -D_gnupghome="${GNUPGHOME}"
         -P ${CMAKE_SOURCE_DIR}/cmake/modules/kdepim_generate_crypto_test_wrapper.cmake
         )

      add_test(NAME ${_testname} COMMAND ${_executable}.bat)

   endif (UNIX)

   # can't be parallelized due to gpg-agent
   set_tests_properties(${_testname} PROPERTIES RUN_SERIAL TRUE)
endmacro (ADD_GPG_CRYPTO_TEST)

macro (ADD_GPG_CRYPTO_AKONADI_TEST _target _testname)
    set(_executable "$<TARGET_FILE:${_target}>")

    if (UNIX)
        if (APPLE)
            set(_library_path_variable "DYLD_LIBRARY_PATH")
        elseif (CYGWIN)
            set(_library_path_variable "PATH")
        else (APPLE)
            set(_library_path_variable "LD_LIBRARY_PATH")
        endif (APPLE)

        if (APPLE)
            # DYLD_LIBRARY_PATH does not work like LD_LIBRARY_PATH
            # OSX already has the RPATH in libraries and executables, putting runtime directories in
            # DYLD_LIBRARY_PATH actually breaks things
            set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/")
        else (APPLE)
            set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/:${LIB_INSTALL_DIR}:${QT_LIBRARY_DIR}")
        endif (APPLE)

        set(_posix "shell")
        set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${_executable}.${_posix}" )

        # use add_custom_target() to have the sh-wrapper generated during build time instead of cmake time
        add_custom_command(TARGET ${_target} POST_BUILD
            COMMAND ${CMAKE_COMMAND}
            -D_filename=${_executable}.${_posix} -D_library_path_variable=${_library_path_variable}
            -D_ld_library_path="${_ld_library_path}" -D_executable="${_executable}"
            -D_gnupghome="${GNUPGHOME}"
            -P ${CMAKE_SOURCE_DIR}/cmake/modules/kdepim_generate_crypto_test_wrapper.cmake
        )


    else (UNIX)
        # under windows, set the property WRAPPER_SCRIPT just to the name of the executable
        # maybe later this will change to a generated batch file (for setting the PATH so that the Qt libs are found)
        set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}\;${LIB_INSTALL_DIR}\;${QT_LIBRARY_DIR}")
        set(_posix "bat")

        # use add_custom_target() to have the batch-file-wrapper generated during build time instead of cmake time
        add_custom_command(TARGET ${_target} POST_BUILD
            COMMAND ${CMAKE_COMMAND}
            -D_filename="${_executable}.${_posix}"
            -D_ld_library_path="${_ld_library_path}" -D_executable="${_executable}"
            -D_gnupghome="${GNUPGHOME}"
            -P ${CMAKE_SOURCE_DIR}/cmake/modules/kdepim_generate_crypto_test_wrapper.cmake
        )

    endif ()

    if (NOT DEFINED _testrunner)
        find_program(_testrunner NAMES akonaditest akonaditest.exe)
        if (NOT _testrunner)
            message(WARNING "Could not locate akonaditest executable, isolated Akonadi tests will fail!")
        endif()
    endif()

    function(_defineTest name backend)
        set(backends ${ARGN})
        if (NOT DEFINED AKONADI_RUN_${backend}_ISOLATED_TESTS OR AKONADI_RUN_${backend}_ISOLATED_TESTS)
            LIST(LENGTH "${backends}" backendsLen)
            string(TOLOWER ${backend} lcbackend)
            LIST(FIND "${backends}" ${lcbackend} enableBackend)
            if (${backendsLen} EQUAL 0 OR ${enableBackend} GREATER -1)
                set(configFile ${CMAKE_CURRENT_SOURCE_DIR}/unittestenv/config.xml)
                if (AKONADI_TESTS_XML)
                    set(extraOptions -xml -o "${TEST_RESULT_OUTPUT_PATH}/${lcbackend}-${name}.xml")
                endif()
                set(_test_name akonadi-${lcbackend}-${name})
                add_test(NAME ${_test_name}
                            COMMAND ${_testrunner} -c "${configFile}" -b ${lcbackend}
                                    "${_executable}.${_posix}" ${extraOptions}
                )
                # Taken from ECMAddTests.cmake
                if (CMAKE_LIBRARY_OUTPUT_DIRECTORY)
                    if(CMAKE_HOST_SYSTEM MATCHES "Windows")
                        set(PATHSEP ";")
                    else() # e.g. Linux
                        set(PATHSEP ":")
                    endif()
                    set(_plugin_path $ENV{QT_PLUGIN_PATH})
                    set(_test_env
                        QT_PLUGIN_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}${PATHSEP}$ENV{QT_PLUGIN_PATH}
                        LD_LIBRARY_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}${PATHSEP}$ENV{LD_LIBRARY_PATH}
                    )
                    set_tests_properties(${_test_name} PROPERTIES ENVIRONMENT "${_test_env}")
                endif()
                set_tests_properties(${_test_name} PROPERTIES RUN_SERIAL TRUE) # can't be parallelized due to gpg-agent
            endif()
        endif()
    endfunction()

    find_program(MYSQLD_EXECUTABLE mysqld /usr/sbin /usr/local/sbin /usr/libexec /usr/local/libexec /opt/mysql/libexec /usr/mysql/bin)
    if (MYSQLD_EXECUTABLE AND NOT WIN32)
        _defineTest(${_testname} "MYSQL" ${CONFIG_BACKENDS})
    endif()

    find_program(POSTGRES_EXECUTABLE postgres)
    if (POSTGRES_EXECUTABLE AND NOT WIN32)
        _defineTest(${_testname} "PGSQL" ${CONFIG_BACKENDS})
    endif()

    _defineTest(${_testname} "SQLITE" ${CONFIG_BACKENDS})
endmacro (ADD_GPG_CRYPTO_AKONADI_TEST)