view ui/tests/CMakeLists.txt @ 560:3af16cbc961d

Move UI code into librarys to speed up build of unit tests
author Andre Heinecke <aheinecke@intevation.de>
date Thu, 22 May 2014 10:57:05 +0000
parents dd8a295d5b4d
children aee3eb10bbba
line wrap: on
line source
# Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
# Software engineering by Intevation GmbH
#
# This file is Free Software under the GNU GPL (v>=2)
# and comes with ABSOLUTELY NO WARRANTY!
# See LICENSE.txt for details.

set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR})

include_directories(${CMAKE_CURRENT_BINARY_DIR}
   ${CMAKE_SOURCE_DIR}/ui
   ${CMAKE_SOURCE_DIR}/common
   ${CMAKE_SOURCE_DIR}/cinst)

find_package(Qt5Test)
include_directories(${Qt5Test_INCLUDE_DIRS})
find_program(HIAWATHA_EXECUTABLE hiawatha)

if (NOT HIAWATHA_EXECUTABLE)
   message (STATUS "WARNING: hiawatha webserver not found. Downloader tests will fail.")
else()
  add_definitions(-DHIAWATHA_EXECUTABLE="${HIAWATHA_EXECUTABLE}")
endif()

macro(add_custom_test _source _additional_sources)
  set(_test ${_source})
  get_filename_component(_name ${_source} NAME_WE)
  set(_test_sources_with_resources ${_test}
     "${_additional_sources};${CMAKE_CURRENT_SOURCE_DIR}/common.cpp")
  qt5_add_resources(_test_sources_with_resources
     ${CMAKE_CURRENT_SOURCE_DIR}/data/testdata.qrc)
  add_executable(${_name} ${_test_sources_with_resources})
  add_test(tb-${_name} ${_name})
  target_link_libraries(${_name}
     tbadminlib
     tblib
     ui_common
     Qt5::Test Qt5::Widgets
     trustbridge_common
     ${POLARSSL_LIBRARIES}
     ${EXTRA_STATIC_LIBS})
endmacro()

# Add the current source dir to the definition
# so that it can be used in file names in the tests.
add_definitions(-DSOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
add_custom_test(certlistparsertest.cpp "")

# Downloader
if (HIAWATHA_EXECUTABLE)
  qt5_add_resources(DOWNLOADER_SOURCES_WITH_RESOURCES ${TRUSTBRIDGE_RESOURCES})
  add_custom_test(downloadertest.cpp "${DOWNLOADER_SOURCES_WITH_RESOURCES}")
endif()

# Cinstprocess
add_custom_test(cinstprocesstest.cpp "")
add_dependencies(cinstprocesstest cinst)
add_custom_test(commontest.cpp "")

add_custom_test(createcertlisttest.cpp "")
add_custom_test(mainwindowtest.cpp "")

if (WIN32)
   add_custom_test(windowsstoretest.cpp "${CMAKE_SOURCE_DIR}/cinst/windowsstore.c")
endif (WIN32)

if (NSS_FOUND)
   include_directories(${NSS_INCLUDE_DIRS})
   set(NSSTEST_SOURCES
      ${CMAKE_SOURCE_DIR}/cinst/nssstore_linux.c
      ${CMAKE_SOURCE_DIR}/cinst/nssstore_win.c)
   add_custom_test(nsstest.cpp "${NSSTEST_SOURCES}")
   target_link_libraries(nsstest ${NSS_LIBRARIES})
   if (WIN32)
      target_link_libraries(nsstest -luserenv)
   endif()

   add_dependencies(nsstest mozilla)

   # NSS code searches the mozilla process in the same path as the caller
   if (WIN32)
      file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/mozilla.exe" link)
      file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/../../cinst/mozilla.exe" target)
   else()
      file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/mozilla" link)
      file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/../../cinst/mozilla" target)
   endif()

   if (NOT EXISTS ${link})
      if (CMAKE_HOST_UNIX)
         set(command ln -s ${target} ${link})
      else()
         set(command cmd.exe /c mklink ${link} ${target})
      endif()
      execute_process(COMMAND ${command}
         RESULT_VARIABLE result
         ERROR_VARIABLE output)
      if (NOT ${result} EQUAL 0)
         message(FATAL_ERROR "Could not create symbolic link for: ${target} --> ${output}")
      endif()
   endif()
endif()

#add_custom_test(${CMAKE_SOURCE_DIR}/ui/main.cpp "${TRUSTBRIDGE_SOURCES}")

http://wald.intevation.org/projects/trustbridge/