aboutsummaryrefslogtreecommitdiff
path: root/test/postinstall/common.cmake
blob: 3a66444c105455552ad8b315e1f93ac1a1657483 (plain)
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
# Common CMake macros for post-install tests

include(CTest)

macro(add_test_ldd EXE)
  set(EXEPATH ${CMAKE_BINARY_DIR}/${EXE})
  if(APPLE)
    set(LDD_CL "otool -L")
    set(EXPECTED_LDD_CL_OUT "@rpath/libproj")
  elseif(UNIX)
    set(LDD_CL "ldd")
    set(EXPECTED_LDD_CL_OUT "${CMAKE_PREFIX_PATH}/lib/libproj")
  elseif(CMAKE_GENERATOR STREQUAL "MSYS Makefiles")
    set(LDD_CL "ldd")
    # Convert to Unix-style path
    execute_process(
      COMMAND cygpath -u ${CMAKE_PREFIX_PATH}/bin/libproj
        OUTPUT_VARIABLE EXPECTED_LDD_CL_OUT
        OUTPUT_STRIP_TRAILING_WHITESPACE)
  endif()
  if(LDD_CL)
    add_test(NAME test_ldd
      COMMAND sh -c "${LDD_CL} ${EXEPATH} | grep proj")
    if($ENV{BUILD_MODE} STREQUAL "static")
      set_tests_properties(test_ldd PROPERTIES
        PASS_REGULAR_EXPRESSION "^$"
        FAIL_REGULAR_EXPRESSION "${EXPECTED_LDD_CL_OUT};not found"
      )
    else()
      set_tests_properties(test_ldd PROPERTIES
        PASS_REGULAR_EXPRESSION "${EXPECTED_LDD_CL_OUT}"
        FAIL_REGULAR_EXPRESSION "not found"
      )
    endif()
  else()
    add_test(NAME test_ldd COMMAND ${EXEPATH})
    set_tests_properties(test_ldd PROPERTIES SKIP_RETURN_CODE 1)
  endif()
endmacro()

macro(add_test_transform EXE)
  set(EXEPATH ${CMAKE_BINARY_DIR}/${EXE})
  add_test(NAME test_transform COMMAND ${EXEPATH} -t)
  set(EXPECTED
"easting: 691875.63, northing: 6098907.83, latitude: 55.00, longitude: 12.00")
  set_tests_properties(test_transform PROPERTIES
    PASS_REGULAR_EXPRESSION "${EXPECTED}"
  )
endmacro()

macro(add_test_searchpath EXE)
  set(EXEPATH ${CMAKE_BINARY_DIR}/${EXE})
  # data directory property not available, so recreate one
  get_filename_component(EXPECTED_SEARCHPATH
    "${${USE_PROJ_NAME}_DIR}/../../../share/proj" ABSOLUTE)
  if(WIN32)
    # Match each '/' with either '\' or '/'
    string(REPLACE "/" "[\\/]" EXPECTED_SEARCHPATH "${EXPECTED_SEARCHPATH}")
  endif()
  add_test(NAME test_searchpath COMMAND ${EXEPATH} -s)
  set_tests_properties(test_searchpath PROPERTIES
    PASS_REGULAR_EXPRESSION "${EXPECTED_SEARCHPATH}"
  )
endmacro()

macro(add_test_version EXE)
  set(EXEPATH ${CMAKE_BINARY_DIR}/${EXE})
  add_test(NAME test_version COMMAND ${EXEPATH} -v)
  set_tests_properties(test_version PROPERTIES
    PASS_REGULAR_EXPRESSION "${${USE_PROJ_NAME}_VERSION}"
  )
endmacro()