~ubuntu-branches/ubuntu/trusty/ubuntu-settings-components/trusty

« back to all changes in this revision

Viewing changes to cmake/modules/QmlTest.cmake

  • Committer: Package Import Robot
  • Author(s): Ubuntu daily release
  • Date: 2013-11-20 14:57:11 UTC
  • Revision ID: package-import@ubuntu.com-20131120145711-696cnastnyown5hx
Tags: upstream-0.1+14.04.20131120.1
ImportĀ upstreamĀ versionĀ 0.1+14.04.20131120.1

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
find_program(qmlscene_exe qmlscene)
 
24
 
 
25
if(NOT qmltestrunner_exe)
 
26
  msg(FATAL_ERROR "Could not locate qmltestrunner.")
 
27
endif()
 
28
 
 
29
macro(add_manual_qml_test SUBPATH COMPONENT_NAME)
 
30
    set(options NO_ADD_TEST NO_TARGETS)
 
31
    set(multi_value_keywords IMPORT_PATHS TARGETS PROPERTIES ENVIRONMENT)
 
32
 
 
33
    cmake_parse_arguments(qmltest "${options}" "" "${multi_value_keywords}" ${ARGN})
 
34
 
 
35
    set(qmlscene_TARGET try${COMPONENT_NAME})
 
36
    set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})
 
37
 
 
38
    set(qmlscene_imports "")
 
39
    if(NOT "${qmltest_IMPORT_PATHS}" STREQUAL "")
 
40
        foreach(IMPORT_PATH ${qmltest_IMPORT_PATHS})
 
41
            list(APPEND qmlscene_imports "-I")
 
42
            list(APPEND qmlscene_imports ${IMPORT_PATH})
 
43
        endforeach(IMPORT_PATH)
 
44
    elseif(NOT "${qmltest_DEFAULT_IMPORT_PATHS}" STREQUAL "")
 
45
        foreach(IMPORT_PATH ${qmltest_DEFAULT_IMPORT_PATHS})
 
46
            list(APPEND qmlscene_imports "-I")
 
47
            list(APPEND qmlscene_imports ${IMPORT_PATH})
 
48
        endforeach(IMPORT_PATH)
 
49
    endif()
 
50
 
 
51
    set(qmlscene_command
 
52
        env ${qmltest_ENVIRONMENT}
 
53
        ${qmlscene_exe} ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
 
54
            ${qmlscene_imports}
 
55
    )
 
56
    add_custom_target(${qmlscene_TARGET} ${qmlscene_command})
 
57
 
 
58
endmacro(add_manual_qml_test)
 
59
 
 
60
macro(add_qml_test SUBPATH COMPONENT_NAME)
 
61
    set(options NO_ADD_TEST NO_TARGETS)
 
62
    set(multi_value_keywords IMPORT_PATHS TARGETS PROPERTIES ENVIRONMENT)
 
63
 
 
64
    cmake_parse_arguments(qmltest "${options}" "" "${multi_value_keywords}" ${ARGN})
 
65
 
 
66
    set(qmltest_TARGET test${COMPONENT_NAME})
 
67
    set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})
 
68
 
 
69
    set(qmltestrunner_imports "")
 
70
    if(NOT "${qmltest_IMPORT_PATHS}" STREQUAL "")
 
71
        foreach(IMPORT_PATH ${qmltest_IMPORT_PATHS})
 
72
            list(APPEND qmltestrunner_imports "-import")
 
73
            list(APPEND qmltestrunner_imports ${IMPORT_PATH})
 
74
        endforeach(IMPORT_PATH)
 
75
    elseif(NOT "${qmltest_DEFAULT_IMPORT_PATHS}" STREQUAL "")
 
76
        foreach(IMPORT_PATH ${qmltest_DEFAULT_IMPORT_PATHS})
 
77
            list(APPEND qmltestrunner_imports "-import")
 
78
            list(APPEND qmltestrunner_imports ${IMPORT_PATH})
 
79
        endforeach(IMPORT_PATH)
 
80
    endif()
 
81
 
 
82
    set(qmltest_command
 
83
        env ${qmltest_ENVIRONMENT}
 
84
        ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
 
85
            ${qmltestrunner_imports}
 
86
            -o ${CMAKE_BINARY_DIR}/${qmltest_TARGET}.xml,xunitxml
 
87
            -o -,txt
 
88
    )
 
89
    add_custom_target(${qmltest_TARGET} ${qmltest_command})
 
90
 
 
91
    if(NOT "${qmltest_PROPERTIES}" STREQUAL "")
 
92
        set_target_properties(${qmltest_TARGET} PROPERTIES ${qmltest_PROPERTIES})
 
93
    elseif(NOT "${qmltest_DEFAULT_PROPERTIES}" STREQUAL "")
 
94
        set_target_properties(${qmltest_TARGET} PROPERTIES ${qmltest_DEFAULT_PROPERTIES})
 
95
    endif()
 
96
 
 
97
    if("${qmltest_NO_ADD_TEST}" STREQUAL FALSE AND NOT "${qmltest_DEFAULT_NO_ADD_TEST}" STREQUAL "TRUE")
 
98
        add_test(${qmltest_TARGET} ${qmltest_command})
 
99
 
 
100
        if(NOT "${qmltest_UNPARSED_ARGUMENTS}" STREQUAL "")
 
101
            set_tests_properties(${qmltest_TARGET} PROPERTIES ${qmltest_PROPERTIES})
 
102
        elseif(NOT "${qmltest_DEFAULT_PROPERTIES}" STREQUAL "")
 
103
            set_tests_properties(${qmltest_TARGET} PROPERTIES ${qmltest_DEFAULT_PROPERTIES})
 
104
        endif()
 
105
    endif("${qmltest_NO_ADD_TEST}" STREQUAL FALSE AND NOT "${qmltest_DEFAULT_NO_ADD_TEST}" STREQUAL "TRUE")
 
106
 
 
107
    if("${qmltest_NO_TARGETS}" STREQUAL "FALSE")
 
108
        if(NOT "${qmltest_TARGETS}" STREQUAL "")
 
109
            foreach(TARGET ${qmltest_TARGETS})
 
110
                add_dependencies(${TARGET} ${qmltest_TARGET})
 
111
            endforeach(TARGET)
 
112
        elseif(NOT "${qmltest_DEFAULT_TARGETS}" STREQUAL "")
 
113
            foreach(TARGET ${qmltest_DEFAULT_TARGETS})
 
114
                add_dependencies(${TARGET} ${qmltest_TARGET})
 
115
            endforeach(TARGET)
 
116
        endif()
 
117
    endif("${qmltest_NO_TARGETS}" STREQUAL "FALSE")
 
118
 
 
119
    add_manual_qml_test(${SUBPATH} ${COMPONENT_NAME} ${ARGN})
 
120
endmacro(add_qml_test)