@@ -22,57 +22,66 @@ add_subdirectory(uqmlscene)
2222add_executable(qmlscene ALIAS uqmlscene)
2323import_executables(dbus-test-runner)
2424
25−set(UNITY_PLUGINPATH "" CACHE PATH "Path to pre-built unity8 plugin dir.")
26−set(UNITY_MOCKPATH "" CACHE PATH "Path to pre-built unity8 mock dir.")
25+set(UNITY_PLUGINPATH "${CMAKE_BINARY_DIR}/plugins" CACHE PATH "Path to pre-built unity8 plugin dir.")
26+set(UNITY_MOCKPATH "${CMAKE_BINARY_DIR}/tests/mocks" CACHE PATH "Path to pre-built unity8 mock dir.")
2727
2828# Pre-built mocks have preference, pre-built plugins replace local build
29−set(import_paths "")
30−if(UNITY_MOCKPATH)
31− list(APPEND import_paths ${UNITY_MOCKPATH})
32−endif()
33−list(APPEND import_paths
29+set(UNITY_IMPORT_PATHS
30+ ${UNITY_MOCKPATH}
3431 ${CMAKE_BINARY_DIR}/tests/mocks
3532 ${CMAKE_BINARY_DIR}/tests/utils/modules
33+ ${UNITY_PLUGINPATH}
3634)
37−if(UNITY_PLUGINPATH)
38− list(APPEND import_paths ${UNITY_PLUGINPATH})
39−else()
40− list(APPEND import_paths ${CMAKE_BINARY_DIR}/plugins)
41−endif()
42−
43−# Pre-built mocks replace local build
44−if(UNITY_MOCKPATH)
45− set(ld_paths
46− ${UNITY_MOCKPATH}/libusermetrics
47− ${UNITY_MOCKPATH}/LightDM/liblightdm
35+list(REMOVE_DUPLICATES UNITY_IMPORT_PATHS)
36+set(UNITY_IMPORT_PATHS ${UNITY_IMPORT_PATHS} CACHE INTERNAL "")
37+
38+macro(unity8_parse_arguments)
39+ cmake_parse_arguments(U8TEST
40+ "${QMLTEST_OPTIONS};QMENUMODEL;LIGHTDM"
41+ "${QMLTEST_SINGLE}"
42+ "${QMLTEST_MULTI}"
43+ ${ARGN}
4844 )
49−else()
50− set(ld_paths
51− ${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics
52− ${CMAKE_BINARY_DIR}/tests/mocks/LightDM/liblightdm
45+
46+ set(ld_paths)
47+ if(U8TEST_LIGHTDM)
48+ list(APPEND ld_paths
49+ ${UNITY_MOCKPATH}/libusermetrics
50+ ${UNITY_MOCKPATH}/LightDM/liblightdm
51+ )
52+ endif()
53+
54+ if(U8TEST_QMENUMODEL)
55+ list(APPEND ld_paths ${CMAKE_BINARY_DIR}/tests/mocks/QMenuModel)
56+ endif()
57+
58+ if(ld_paths)
59+ string(REPLACE ";" ":" ld_library_path "${ld_paths}")
60+ set(ld_library_path LD_LIBRARY_PATH=${ld_library_path})
61+ endif()
62+
63+ set(U8TEST_ARGN "${ARGN}")
64+ list(REMOVE_ITEM U8TEST_ARGN QMENUMODEL LIGHTDM)
65+
66+ set(environment
67+ UNITY_TESTING=1
68+ LANGUAGE=C
69+ LC_ALL=C.UTF-8
70+ ${ld_library_path}
5371 )
54−endif()
55−list(APPEND ld_paths ${CMAKE_BINARY_DIR}/tests/mocks/QMenuModel)
56−string(REPLACE ";" ":" ld_library_path "${ld_paths}")
57−
58−# Base/default values
59−set(base_environment
60− UNITY_TESTING=1
61− LANGUAGE=C
62− LC_ALL=C.UTF-8
63− LD_LIBRARY_PATH=${ld_library_path}
64−)
72+endmacro()
73+
6574
6675# add a non-graphical unit test
6776# see QmlTest.cmake for additional options
6877function(add_unity8_unittest COMPONENT_NAME TARGET)
69− cmake_parse_arguments(U8TEST "${QMLTEST_OPTIONS}" "${QMLTESTS_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
78+ unity8_parse_arguments(${ARGN})
7079 add_executable_test(${COMPONENT_NAME} ${TARGET}
7180 ADD_TEST
72− IMPORT_PATHS ${import_paths}
81+ IMPORT_PATHS ${UNITY_IMPORT_PATHS}
7382 TARGETS unittests
74− ${ARGN}
75− ENVIRONMENT ${base_environment}
83+ ${U8TEST_ARGN}
84+ ENVIRONMENT ${environment}
7685 QT_QPA_PLATFORM=minimal
7786 ${U8TEST_ENVIRONMENT}
7887 )
@@ -80,25 +89,25 @@ endfunction()
8089
8190# add a graphical unit test
8291function(add_unity8_uitest COMPONENT_NAME TARGET)
83− cmake_parse_arguments(U8TEST "${QMLTEST_OPTIONS}" "${QMLTESTS_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
92+ unity8_parse_arguments(${ARGN})
8493 add_executable_test(${COMPONENT_NAME} ${TARGET}
85− IMPORT_PATHS ${import_paths}
94+ IMPORT_PATHS ${UNITY_IMPORT_PATHS}
8695 TARGETS uitests
87− ${ARGN}
88− ENVIRONMENT ${base_environment}
96+ ${U8TEST_ARGN}
97+ ENVIRONMENT ${environment}
8998 ${U8TEST_ENVIRONMENT}
9099 )
91100endfunction()
92101
93102# add a non-graphical qml unit test
94103function(add_unity8_qmlunittest PATH COMPONENT_NAME)
95− cmake_parse_arguments(U8TEST "${QMLTEST_OPTIONS}" "${QMLTESTS_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
104+ unity8_parse_arguments(${ARGN})
96105 add_qml_unittest(${PATH} ${COMPONENT_NAME}
97106 ADD_TEST
98− IMPORT_PATHS ${import_paths}
107+ IMPORT_PATHS ${UNITY_IMPORT_PATHS}
99108 TARGET unittests
100− ${ARGN}
101− ENVIRONMENT ${base_environment}
109+ ${U8TEST_ARGN}
110+ ENVIRONMENT ${environment}
102111 QT_QPA_PLATFORM=minimal
103112 ${U8TEST_ENVIRONMENT}
104113 )
@@ -106,19 +115,19 @@ endfunction()
106115
107116# add a graphical qml test
108117function(add_unity8_qmltest PATH COMPONENT_NAME)
109− cmake_parse_arguments(U8TEST "${QMLTEST_OPTIONS}" "${QMLTESTS_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
118+ unity8_parse_arguments(${ARGN})
110119 add_qml_test(${PATH} ${COMPONENT_NAME}
111− IMPORT_PATHS ${import_paths}
120+ IMPORT_PATHS ${UNITY_IMPORT_PATHS}
112121 TARGETS uitests
113− ${ARGN}
114− ENVIRONMENT ${base_environment}
122+ ${U8TEST_ARGN}
123+ ENVIRONMENT ${environment}
115124 ${U8TEST_ENVIRONMENT}
116125 )
117126endfunction()
118127
119128# add a graphical qml benchmark
120129function(add_unity8_qmlbenchmark PATH COMPONENT_NAME ITERATIONS)
121− add_unity8_qmltest(${PATH} ${COMPONENT_NAME} ${ARGN} ITERATIONS ${ITERATIONS})
130+ add_unity8_qmltest(${PATH} ${COMPONENT_NAME} ITERATIONS ${ITERATIONS} ${ARGN})
122131endfunction()
123132
124133