on xenial help sign in
Refactor library and import path handling
fb42f00Michał Sawicz
tests/CMakeLists.txt+55−24
@@ -22,29 +22,60 @@ add_subdirectory(uqmlscene)
22add_executable(qmlscene ALIAS uqmlscene)
22add_executable(qmlscene ALIAS uqmlscene)
23import_executables(dbus-test-runner)
23import_executables(dbus-test-runner)
24
24
25−# Base/default values
25+set(UNITY_IMPORT_PATHS
26−set(base_environment
27− UNITY_TESTING=1
28− LANGUAGE=C
29− LC_ALL=C.UTF-8
30−)
31−
32−set(import_paths
33 ${CMAKE_BINARY_DIR}/tests/mocks
26 ${CMAKE_BINARY_DIR}/tests/mocks
34 ${CMAKE_BINARY_DIR}/tests/utils/modules
27 ${CMAKE_BINARY_DIR}/tests/utils/modules
35 ${CMAKE_BINARY_DIR}/plugins
28 ${CMAKE_BINARY_DIR}/plugins
36)
29)
30+set(UNITY_IMPORT_PATHS ${UNITY_IMPORT_PATHS} CACHE INTERNAL "")
31+
32+macro(unity8_parse_arguments)
33+ cmake_parse_arguments(U8TEST
34+ "${QMLTEST_OPTIONS};QMENUMODEL;LIGHTDM"
35+ "${QMLTEST_SINGLE}"
36+ "${QMLTEST_MULTI}"
37+ ${ARGN}
38+ )
39+
40+ set(ld_paths)
41+ if(U8TEST_LIGHTDM)
42+ list(APPEND ld_paths
43+ ${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics
44+ ${CMAKE_BINARY_DIR}/tests/mocks/LightDM/liblightdm
45+ )
46+ endif()
47+
48+ if(U8TEST_QMENUMODEL)
49+ list(APPEND ld_paths ${CMAKE_BINARY_DIR}/tests/mocks/QMenuModel)
50+ endif()
51+
52+ if(ld_paths)
53+ string(REPLACE ";" ":" ld_library_path "${ld_paths}")
54+ set(ld_library_path LD_LIBRARY_PATH=${ld_library_path})
55+ endif()
56+
57+ set(U8TEST_ARGN "${ARGN}")
58+ list(REMOVE_ITEM U8TEST_ARGN QMENUMODEL LIGHTDM)
59+
60+ set(environment
61+ UNITY_TESTING=1
62+ LANGUAGE=C
63+ LC_ALL=C.UTF-8
64+ ${ld_library_path}
65+ )
66+endmacro()
37
67
38
68
39# add a non-graphical unit test
69# add a non-graphical unit test
40# see QmlTest.cmake for additional options
70# see QmlTest.cmake for additional options
41function(add_unity8_unittest COMPONENT_NAME TARGET)
71function(add_unity8_unittest COMPONENT_NAME TARGET)
42− cmake_parse_arguments(U8TEST "${QMLTEST_OPTIONS}" "${QMLTESTS_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
72+ unity8_parse_arguments(${ARGN})
43 add_executable_test(${COMPONENT_NAME} ${TARGET}
73 add_executable_test(${COMPONENT_NAME} ${TARGET}
44 ADD_TEST
74 ADD_TEST
75+ IMPORT_PATHS ${UNITY_IMPORT_PATHS}
45 TARGETS unittests
76 TARGETS unittests
46− ${ARGN}
77+ ${U8TEST_ARGN}
47− ENVIRONMENT ${base_environment}
78+ ENVIRONMENT ${environment}
48 QT_QPA_PLATFORM=minimal
79 QT_QPA_PLATFORM=minimal
49 ${U8TEST_ENVIRONMENT}
80 ${U8TEST_ENVIRONMENT}
50 )
81 )
@@ -52,24 +83,25 @@ endfunction()
52
83
53# add a graphical unit test
84# add a graphical unit test
54function(add_unity8_uitest COMPONENT_NAME TARGET)
85function(add_unity8_uitest COMPONENT_NAME TARGET)
55− cmake_parse_arguments(U8TEST "${QMLTEST_OPTIONS}" "${QMLTESTS_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
86+ unity8_parse_arguments(${ARGN})
56 add_executable_test(${COMPONENT_NAME} ${TARGET}
87 add_executable_test(${COMPONENT_NAME} ${TARGET}
88+ IMPORT_PATHS ${UNITY_IMPORT_PATHS}
57 TARGETS uitests
89 TARGETS uitests
58− ${ARGN}
90+ ${U8TEST_ARGN}
59− ENVIRONMENT ${base_environment}
91+ ENVIRONMENT ${environment}
60 ${U8TEST_ENVIRONMENT}
92 ${U8TEST_ENVIRONMENT}
61 )
93 )
62endfunction()
94endfunction()
63
95
64# add a non-graphical qml unit test
96# add a non-graphical qml unit test
65function(add_unity8_qmlunittest PATH COMPONENT_NAME)
97function(add_unity8_qmlunittest PATH COMPONENT_NAME)
66− cmake_parse_arguments(U8TEST "${QMLTEST_OPTIONS}" "${QMLTESTS_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
98+ unity8_parse_arguments(${ARGN})
67 add_qml_unittest(${PATH} ${COMPONENT_NAME}
99 add_qml_unittest(${PATH} ${COMPONENT_NAME}
68 ADD_TEST
100 ADD_TEST
69− IMPORT_PATHS ${import_paths}
101+ IMPORT_PATHS ${UNITY_IMPORT_PATHS}
70 TARGET unittests
102 TARGET unittests
71− ${ARGN}
103+ ${U8TEST_ARGN}
72− ENVIRONMENT ${base_environment}
104+ ENVIRONMENT ${environment}
73 QT_QPA_PLATFORM=minimal
105 QT_QPA_PLATFORM=minimal
74 ${U8TEST_ENVIRONMENT}
106 ${U8TEST_ENVIRONMENT}
75 )
107 )
@@ -77,20 +109,19 @@ endfunction()
77
109
78# add a graphical qml test
110# add a graphical qml test
79function(add_unity8_qmltest PATH COMPONENT_NAME)
111function(add_unity8_qmltest PATH COMPONENT_NAME)
80− cmake_parse_arguments(U8TEST "${QMLTEST_OPTIONS}" "${QMLTESTS_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
112+ unity8_parse_arguments(${ARGN})
81 add_qml_test(${PATH} ${COMPONENT_NAME}
113 add_qml_test(${PATH} ${COMPONENT_NAME}
82− IMPORT_PATHS ${import_paths}
114+ IMPORT_PATHS ${UNITY_IMPORT_PATHS}
83 TARGETS uitests
115 TARGETS uitests
84− ${ARGN}
116+ ${U8TEST_ARGN}
85− ENVIRONMENT ${base_environment}
117+ ENVIRONMENT ${environment}
86− LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/liblightdm:${CMAKE_BINARY_DIR}/tests/mocks/QMenuModel
87 ${U8TEST_ENVIRONMENT}
118 ${U8TEST_ENVIRONMENT}
88 )
119 )
89endfunction()
120endfunction()
90
121
91# add a graphical qml benchmark
122# add a graphical qml benchmark
92function(add_unity8_qmlbenchmark PATH COMPONENT_NAME ITERATIONS)
123function(add_unity8_qmlbenchmark PATH COMPONENT_NAME ITERATIONS)
93− add_unity8_qmltest(${PATH} ${COMPONENT_NAME} ${ARGN} ITERATIONS ${ITERATIONS})
124+ add_unity8_qmltest(${PATH} ${COMPONENT_NAME} ITERATIONS ${ITERATIONS} ${ARGN})
94endfunction()
125endfunction()
95
126
96
127
tests/plugins/LightDM/CMakeLists.txt+4−3
@@ -31,11 +31,12 @@ add_definitions(-DCURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
31add_unity8_uitest(GreeterDBus dbus-test-runner
31add_unity8_uitest(GreeterDBus dbus-test-runner
32 ARG_PREFIX "--parameter"
32 ARG_PREFIX "--parameter"
33 ARGS --task $<TARGET_FILE:GreeterDBusTestExec>
33 ARGS --task $<TARGET_FILE:GreeterDBusTestExec>
34− ENVIRONMENT LD_LIBRARY_PATH="${CMAKE_BINARY_DIR}/tests/mocks/LightDM/liblightdm"
35− IMPORT_PATHS ${CMAKE_BINARY_DIR}/tests/mocks
36 DEPENDS MockLightDM
34 DEPENDS MockLightDM
35+ IMPORT_PATHS ${CMAKE_BINARY_DIR}/tests/mocks
36+ LIGHTDM
37 )
37 )
38add_unity8_uitest(GreeterUsers GreeterUsersModelTestExec
38add_unity8_uitest(GreeterUsers GreeterUsersModelTestExec
39− ENVIRONMENT LD_LIBRARY_PATH="${CMAKE_BINARY_DIR}/tests/mocks/LightDM/liblightdm" LIBLIGHTDM_MOCK_MODE=full
39+ ENVIRONMENT LIBLIGHTDM_MOCK_MODE=full
40 DEPENDS MockLightDM
40 DEPENDS MockLightDM
41+ LIGHTDM
41 )
42 )