~alan-griffiths/miral/fix-1645284

« back to all changes in this revision

Viewing changes to miral-qt/cmake/modules/QmlTest.cmake

  • Committer: Alan Griffiths
  • Date: 2016-11-07 17:59:19 UTC
  • mfrom: (436.1.1 miral2)
  • Revision ID: alan@octopull.co.uk-20161107175919-stbb64i7j1htgog2
[miral-qt] delete all as qtmir work on MirAL has shifted to lp:~unity-team/qtmir/miral-qt-integration and this is a needless distration

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# add_qml_test(path component_name [NO_ADD_TEST] [NO_TARGETS]
2
 
#              [TARGETS target1 [target2 [...]]]
3
 
#              [IMPORT_PATHS import_path1 [import_path2 [...]]
4
 
#              [PROPERTIES prop1 value1 [prop2 value2 [...]]])
5
 
#
6
 
# NO_ADD_TEST will prevent adding the test to the "test" target
7
 
# NO_TARGETS will prevent adding the test to any targets
8
 
# TARGETS lists the targets the test should be added to
9
 
# IMPORT_PATHS will pass those paths to qmltestrunner as "-import" arguments
10
 
# PROPERTIES will be set on the target and test target. See CMake's set_target_properties()
11
 
#
12
 
# Two targets will be created:
13
 
#   - testComponentName - Runs the test with qmltestrunner
14
 
#   - tryComponentName - Runs the test with uqmlscene, for manual interaction
15
 
#
16
 
# To change/set a default value for the whole test suite, prior to calling add_qml_test, set:
17
 
# qmltest_DEFAULT_NO_ADD_TEST (default: FALSE)
18
 
# qmltest_DEFAULT_TARGETS
19
 
# qmltest_DEFAULT_IMPORT_PATHS
20
 
# qmltest_DEFAULT_PROPERTIES
21
 
 
22
 
find_program(qmltestrunner_exe qmltestrunner)
23
 
 
24
 
if(NOT qmltestrunner_exe)
25
 
  msg(FATAL_ERROR "Could not locate qmltestrunner.")
26
 
endif()
27
 
 
28
 
set(qmlscene_exe ${CMAKE_BINARY_DIR}/tests/uqmlscene/uqmlscene)
29
 
 
30
 
macro(add_manual_qml_test SUBPATH COMPONENT_NAME)
31
 
    set(options NO_ADD_TEST NO_TARGETS)
32
 
    set(multi_value_keywords IMPORT_PATHS TARGETS PROPERTIES ENVIRONMENT)
33
 
 
34
 
    cmake_parse_arguments(qmltest "${options}" "" "${multi_value_keywords}" ${ARGN})
35
 
 
36
 
    set(qmlscene_TARGET try${COMPONENT_NAME})
37
 
    set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})
38
 
 
39
 
    set(qmlscene_imports "")
40
 
    if(NOT "${qmltest_IMPORT_PATHS}" STREQUAL "")
41
 
        foreach(IMPORT_PATH ${qmltest_IMPORT_PATHS})
42
 
            list(APPEND qmlscene_imports "-I")
43
 
            list(APPEND qmlscene_imports ${IMPORT_PATH})
44
 
        endforeach(IMPORT_PATH)
45
 
    elseif(NOT "${qmltest_DEFAULT_IMPORT_PATHS}" STREQUAL "")
46
 
        foreach(IMPORT_PATH ${qmltest_DEFAULT_IMPORT_PATHS})
47
 
            list(APPEND qmlscene_imports "-I")
48
 
            list(APPEND qmlscene_imports ${IMPORT_PATH})
49
 
        endforeach(IMPORT_PATH)
50
 
    endif()
51
 
 
52
 
    set(qmlscene_command
53
 
        env ${qmltest_ENVIRONMENT}
54
 
        ${qmlscene_exe} ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
55
 
            ${qmlscene_imports}
56
 
    )
57
 
    add_custom_target(${qmlscene_TARGET} ${qmlscene_command})
58
 
 
59
 
endmacro(add_manual_qml_test)
60
 
 
61
 
macro(add_qml_benchmark SUBPATH COMPONENT_NAME ITERATIONS)
62
 
    add_qml_test_internal(${SUBPATH} ${COMPONENT_NAME} ${ITERATIONS} ${ARGN})
63
 
endmacro(add_qml_benchmark)
64
 
 
65
 
macro(add_qml_test SUBPATH COMPONENT_NAME)
66
 
    add_qml_test_internal(${SUBPATH} ${COMPONENT_NAME} 0 ${ARGN})
67
 
endmacro(add_qml_test)
68
 
 
69
 
macro(add_qml_test_internal SUBPATH COMPONENT_NAME ITERATIONS)
70
 
    set(options NO_ADD_TEST NO_TARGETS)
71
 
    set(multi_value_keywords IMPORT_PATHS TARGETS PROPERTIES ENVIRONMENT)
72
 
 
73
 
    cmake_parse_arguments(qmltest "${options}" "" "${multi_value_keywords}" ${ARGN})
74
 
 
75
 
    set(qmltest_TARGET test${COMPONENT_NAME})
76
 
    set(qmltest_xvfb_TARGET xvfbtest${COMPONENT_NAME})
77
 
    set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})
78
 
 
79
 
    set(qmltestrunner_imports "")
80
 
    if(NOT "${qmltest_IMPORT_PATHS}" STREQUAL "")
81
 
        foreach(IMPORT_PATH ${qmltest_IMPORT_PATHS})
82
 
            list(APPEND qmltestrunner_imports "-import")
83
 
            list(APPEND qmltestrunner_imports ${IMPORT_PATH})
84
 
        endforeach(IMPORT_PATH)
85
 
    elseif(NOT "${qmltest_DEFAULT_IMPORT_PATHS}" STREQUAL "")
86
 
        foreach(IMPORT_PATH ${qmltest_DEFAULT_IMPORT_PATHS})
87
 
            list(APPEND qmltestrunner_imports "-import")
88
 
            list(APPEND qmltestrunner_imports ${IMPORT_PATH})
89
 
        endforeach(IMPORT_PATH)
90
 
    endif()
91
 
 
92
 
    string(TOLOWER "${CMAKE_GENERATOR}" cmake_generator_lower)
93
 
    if(cmake_generator_lower STREQUAL "unix makefiles")
94
 
        set(function_ARGS $(FUNCTION))
95
 
    else()
96
 
        set(function_ARGS "")
97
 
    endif()
98
 
 
99
 
    if (${ITERATIONS} GREATER 0)
100
 
        set(ITERATIONS_STRING "-iterations" ${ITERATIONS})
101
 
    else()
102
 
        set(ITERATIONS_STRING "")
103
 
    endif()
104
 
 
105
 
    set(qmltest_command
106
 
        env ${qmltest_ENVIRONMENT}
107
 
        ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
108
 
            ${qmltestrunner_imports}
109
 
            ${ITERATIONS_STRING}
110
 
            -o ${CMAKE_BINARY_DIR}/${qmltest_TARGET}.xml,xunitxml
111
 
            -o -,txt
112
 
            ${function_ARGS}
113
 
    )
114
 
    find_program( HAVE_GCC gcc )
115
 
    if (NOT ${HAVE_GCC} STREQUAL "")
116
 
        exec_program( gcc ARGS "-dumpmachine" OUTPUT_VARIABLE ARCH_TRIPLET )
117
 
        set(LD_PRELOAD_PATH "LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1")
118
 
    endif()
119
 
    set(qmltest_xvfb_command
120
 
        env ${qmltest_ENVIRONMENT} ${LD_PRELOAD_PATH}
121
 
        xvfb-run --server-args "-screen 0 1024x768x24" --auto-servernum
122
 
        ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
123
 
        ${qmltestrunner_imports}
124
 
            -o ${CMAKE_BINARY_DIR}/${qmltest_TARGET}.xml,xunitxml
125
 
            -o -,txt
126
 
            ${function_ARGS}
127
 
    )
128
 
 
129
 
    add_qmltest_target(${qmltest_TARGET} "${qmltest_command}" TRUE ${qmltest_NO_ADD_TEST})
130
 
    add_qmltest_target(${qmltest_xvfb_TARGET} "${qmltest_xvfb_command}" ${qmltest_NO_TARGETS} TRUE)
131
 
    add_manual_qml_test(${SUBPATH} ${COMPONENT_NAME} ${ARGN})
132
 
endmacro(add_qml_test_internal)
133
 
 
134
 
macro(add_binary_qml_test CLASS_NAME LD_PATH DEPS)
135
 
    set(testCommand
136
 
          LD_LIBRARY_PATH=${LD_PATH}
137
 
          ${CMAKE_CURRENT_BINARY_DIR}/${CLASS_NAME}TestExec
138
 
          -o ${CMAKE_BINARY_DIR}/${CLASSNAME}Test.xml,xunitxml
139
 
          -o -,txt)
140
 
 
141
 
    add_qmltest_target(test${CLASS_NAME} "${testCommand}" FALSE TRUE)
142
 
    add_dependencies(test${CLASS_NAME} ${CLASS_NAME}TestExec ${DEPS})
143
 
 
144
 
    find_program( HAVE_GCC gcc )
145
 
    if (NOT ${HAVE_GCC} STREQUAL "")
146
 
        exec_program( gcc ARGS "-dumpmachine" OUTPUT_VARIABLE ARCH_TRIPLET )
147
 
        set(LD_PRELOAD_PATH "LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1")
148
 
    endif()
149
 
    set(xvfbtestCommand
150
 
          ${LD_PRELOAD_PATH}
151
 
          LD_LIBRARY_PATH=${LD_PATH}
152
 
          xvfb-run --server-args "-screen 0 1024x768x24" --auto-servernum
153
 
          ${CMAKE_CURRENT_BINARY_DIR}/${CLASS_NAME}TestExec
154
 
          -o ${CMAKE_BINARY_DIR}/${CLASS_NAME}Test.xml,xunitxml
155
 
          -o -,txt)
156
 
 
157
 
    add_qmltest_target(xvfbtest${CLASS_NAME} "${xvfbtestCommand}" FALSE TRUE)
158
 
    add_dependencies(qmluitests xvfbtest${CLASS_NAME})
159
 
endmacro(add_binary_qml_test)
160
 
 
161
 
macro(add_qmltest_target qmltest_TARGET qmltest_command qmltest_NO_TARGETS qmltest_NO_ADD_TEST)
162
 
    add_custom_target(${qmltest_TARGET} ${qmltest_command})
163
 
 
164
 
    if(NOT "${qmltest_PROPERTIES}" STREQUAL "")
165
 
        set_target_properties(${qmltest_TARGET} PROPERTIES ${qmltest_PROPERTIES})
166
 
    elseif(NOT "${qmltest_DEFAULT_PROPERTIES}" STREQUAL "")
167
 
        set_target_properties(${qmltest_TARGET} PROPERTIES ${qmltest_DEFAULT_PROPERTIES})
168
 
    endif()
169
 
 
170
 
    if("${qmltest_NO_ADD_TEST}" STREQUAL FALSE AND NOT "${qmltest_DEFAULT_NO_ADD_TEST}" STREQUAL "TRUE")
171
 
        add_test(${qmltest_TARGET} ${qmltest_command})
172
 
 
173
 
        if(NOT "${qmltest_UNPARSED_ARGUMENTS}" STREQUAL "")
174
 
            set_tests_properties(${qmltest_TARGET} PROPERTIES ${qmltest_PROPERTIES})
175
 
        elseif(NOT "${qmltest_DEFAULT_PROPERTIES}" STREQUAL "")
176
 
            set_tests_properties(${qmltest_TARGET} PROPERTIES ${qmltest_DEFAULT_PROPERTIES})
177
 
        endif()
178
 
    endif("${qmltest_NO_ADD_TEST}" STREQUAL FALSE AND NOT "${qmltest_DEFAULT_NO_ADD_TEST}" STREQUAL "TRUE")
179
 
 
180
 
    if("${qmltest_NO_TARGETS}" STREQUAL "FALSE")
181
 
        if(NOT "${qmltest_TARGETS}" STREQUAL "")
182
 
            foreach(TARGET ${qmltest_TARGETS})
183
 
                add_dependencies(${TARGET} ${qmltest_TARGET})
184
 
            endforeach(TARGET)
185
 
        elseif(NOT "${qmltest_DEFAULT_TARGETS}" STREQUAL "")
186
 
            foreach(TARGET ${qmltest_DEFAULT_TARGETS})
187
 
                add_dependencies(${TARGET} ${qmltest_TARGET})
188
 
            endforeach(TARGET)
189
 
        endif()
190
 
    endif("${qmltest_NO_TARGETS}" STREQUAL "FALSE")
191
 
 
192
 
endmacro(add_qmltest_target)