Merge lp:~saviq/ubuntu-settings-components/packaging-cleanup into lp:~registry/ubuntu-settings-components/trunk

Proposed by Michał Sawicz
Status: Superseded
Proposed branch: lp:~saviq/ubuntu-settings-components/packaging-cleanup
Merge into: lp:~registry/ubuntu-settings-components/trunk
Prerequisite: lp:~aacid/ubuntu-settings-components/standarizeImports
Diff against target: 1817 lines (+820/-732)
27 files modified
CMakeLists.txt (+8/-43)
SettingsComponents.qmlproject (+0/-23)
cmake/modules/EnableCoverageReport.cmake (+0/-166)
cmake/modules/FindLcov.cmake (+0/-29)
cmake/modules/Findgcovr.cmake (+0/-31)
cmake/modules/ParseArguments.cmake (+0/-52)
cmake/modules/QmlPlugins.cmake (+0/-150)
cmake/modules/QmlTest.cmake (+311/-118)
cmake_uninstall.cmake.in (+0/-21)
debian/changelog (+6/-0)
debian/control (+19/-6)
debian/qml-module-ubuntu-system-components.install (+2/-0)
debian/tests/control (+4/-0)
debian/tests/qmluitests.sh (+5/-0)
plugins/Ubuntu/Settings/Components/CMakeLists.txt (+5/-8)
plugins/Ubuntu/Settings/Components/Components.qmltypes (+65/-1)
plugins/Ubuntu/Settings/Components/serverpropertysynchroniser.cpp (+0/-1)
plugins/Ubuntu/Settings/Menus/CMakeLists.txt (+6/-14)
plugins/Ubuntu/Settings/Menus/Menus.qmltypes (+66/-1)
runtests.sh (+1/-1)
tests/CMakeLists.txt (+24/-7)
tests/imports/CMakeLists.txt (+5/-0)
tests/imports/check_imports.py (+125/-0)
tests/qmltests/CMakeLists.txt (+30/-42)
tests/utils/modules/CMakeLists.txt (+2/-0)
tests/utils/modules/Ubuntu/Test/CMakeLists.txt (+12/-18)
tests/utils/modules/Ubuntu/Test/Test.qmltypes (+124/-0)
To merge this branch: bzr merge lp:~saviq/ubuntu-settings-components/packaging-cleanup
Reviewer Review Type Date Requested Status
Unity8 CI Bot (community) continuous-integration Needs Fixing
Michael Terry (community) Needs Information
Nick Dedekind (community) Approve
PS Jenkins bot (community) continuous-integration Needs Fixing
Review via email: mp+284376@code.launchpad.net

This proposal has been superseded by a proposal from 2016-06-02.

Commit message

Refactor and clean up packaging/build system and add autopkgtests

a lot of clean ups
using cmake-extras instead of a copy of CMake modules (except for QmlPlugins, bug #1539314)
add an import version checker (UITK hates it when you mix 1.2 and 1.3)
add autopkgtest running the qml UI tests

To post a comment you must log in.
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

PASSED: Continuous integration, rev:120
https://unity8-jenkins.ubuntu.com/job/lp-ubuntu-settings-components-1-ci/12/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/631
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=vivid+overlay/201
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial/201
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/654
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/672
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/672
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/668
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/668/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial/668
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial/668/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/668
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/668/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial/668
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial/668/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/668
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/668/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial/668
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial/668/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-ubuntu-settings-components-1-ci/12/rebuild

review: Approve (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:120
https://unity8-jenkins.ubuntu.com/job/lp-ubuntu-settings-components-1-ci/12/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/631
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=vivid+overlay/201
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial/201
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/654
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/672
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/672
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/668
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/668/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial/668
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial/668/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/668
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/668/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial/668
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial/668/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/668
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/668/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial/668
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial/668/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-ubuntu-settings-components-1-ci/12/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Nick Dedekind (nick-dedekind) wrote :

 * Did you perform an exploratory manual test run of the code change and any related functionality?
Yes

 * Did CI run pass? If not, please explain why.
Unrelated test failure.

review: Approve
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

PASSED: Continuous integration, rev:121
https://unity8-jenkins.ubuntu.com/job/lp-ubuntu-settings-components-1-ci/14/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/635
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=vivid+overlay/204
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial/204
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/658
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/676
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/676
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/672
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/672/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial/672
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial/672/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/672
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/672/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial/672
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial/672/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/672
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/672/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial/672
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial/672/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-ubuntu-settings-components-1-ci/14/rebuild

review: Approve (continuous-integration)
Revision history for this message
Michael Terry (mterry) wrote :

As for packaging... It's not common to provide an oldlibs transitional version AND do the Breaks/Conflicts/Provides dance. Usually one or the other. I think either would work fine for this case.

Doing both will mean the transitional one pulls in the new one, but the new one can't live with the transitional one. I'm not sure what would happen on an upgrade there. It might work like you want, but I'm not positive what apt does. Have you tested the upgrade case there? Maybe with a silo to be able to test apt logic?

review: Needs Information
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
122. By Michał Sawicz

Merge trunk

123. By Michał Sawicz

Drop qmltypes files

124. By Michał Sawicz

Don't mix imports

125. By Michał Sawicz

Update QmlTest.cmake

126. By Michał Sawicz

Bump transitional version

127. By Michał Sawicz

Build mocks in autopkgtests

128. By Michał Sawicz

Fix FingerprintSetup test

129. By Michał Sawicz

Don't depend on qt5-default, export QT_SELECT instead

130. By Michał Sawicz

Rename install file

131. By Michał Sawicz

Update install file

132. By Michał Sawicz

Don't install mocks

133. By Michał Sawicz

Use imported Qt5 targets

134. By Michał Sawicz

Fix install file

135. By Michał Sawicz

Add missing thumbnailer dep and transition to qml-module-* dependencies

136. By Michał Sawicz

wrap-and-sort -at

137. By Michał Sawicz

Add missing dependency on folderlistmodel

138. By Michał Sawicz

Fix test suite names

139. By Michał Sawicz

Fix tst_Fingerprints.qml

140. By Michał Sawicz

Fix import path

141. By Michał Sawicz

Merge lp:~nick-dedekind/ubuntu-settings-components/calendar-test-fixes

142. By Michał Sawicz

Fix typo

143. By Michał Sawicz

Drop spurious moc includes

144. By Michał Sawicz

Unskip test after it's been fixed upstream

145. By Michał Sawicz

Fix up import paths and environment

146. By Michał Sawicz

8

Unmerged revisions

146. By Michał Sawicz

8

145. By Michał Sawicz

Fix up import paths and environment

144. By Michał Sawicz

Unskip test after it's been fixed upstream

143. By Michał Sawicz

Drop spurious moc includes

142. By Michał Sawicz

Fix typo

141. By Michał Sawicz

Merge lp:~nick-dedekind/ubuntu-settings-components/calendar-test-fixes

140. By Michał Sawicz

Fix import path

139. By Michał Sawicz

Fix tst_Fingerprints.qml

138. By Michał Sawicz

Fix test suite names

137. By Michał Sawicz

Add missing dependency on folderlistmodel

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2015-08-02 14:42:46 +0000
+++ CMakeLists.txt 2016-03-24 12:20:44 +0000
@@ -1,6 +1,4 @@
1
2project(settings-components)1project(settings-components)
3
4cmake_minimum_required(VERSION 2.8.9)2cmake_minimum_required(VERSION 2.8.9)
53
6set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)4set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
@@ -11,17 +9,13 @@
11include(FindPkgConfig)9include(FindPkgConfig)
1210
13find_package(Qt5Quick REQUIRED)11find_package(Qt5Quick REQUIRED)
14set(OUR_QT_QUICK_LIB ${Qt5Quick_LIBRARIES})12
1513set(QT_IMPORTS_DIR ${CMAKE_INSTALL_LIBDIR}/qt5/qml)
16get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION)
17exec_program(${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_QML" OUTPUT_VARIABLE QT_IMPORTS_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
18file(TO_CMAKE_PATH "${QT_IMPORTS_DIR}" QT_IMPORTS_DIR)
19
20set(OUR_QT_QUICK_INCLUDE ${Qt5Quick_INCLUDE_DIRS})
21LIST(APPEND QT_PKGCONFIG_DEPENDENCIES "Qt5Quick")
2214
23find_package(Qt5Core REQUIRED)15find_package(Qt5Core REQUIRED)
16find_package(Qt5Qml REQUIRED)
24find_package(Qt5Quick REQUIRED)17find_package(Qt5Quick REQUIRED)
18find_package(Qt5Test REQUIRED)
25find_package(Qt5Widgets REQUIRED)19find_package(Qt5Widgets REQUIRED)
26add_definitions(-DQT_NO_KEYWORDS)20add_definitions(-DQT_NO_KEYWORDS)
2721
@@ -34,39 +28,10 @@
34 add_definitions(-DQT_QML_DEBUG)28 add_definitions(-DQT_QML_DEBUG)
35endif()29endif()
3630
37include(EnableCoverageReport)31# Quiet logger
38#####################################################################32set(QUIET_LOGGER OFF CACHE BOOL "Disable test output on stdout.")
39# Enable code coverage calculation with gcov/gcovr/lcov33if(NOT QUIET_LOGGER)
40# Usage:34 set(STDOUT_LOGGER "-o" "-,txt")
41# * Switch build type to coverage (use ccmake or cmake-gui)
42# * Invoke make, make test, make coverage (or ninja if you use that backend)
43# * Find html report in subdir coveragereport
44# * Find xml report feasible for jenkins in coverage.xml
45#####################################################################
46if(cmake_build_type_lower MATCHES coverage)
47 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage" )
48 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage" )
49 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} --coverage" )
50 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --coverage" )
51 ENABLE_COVERAGE_REPORT(TARGETS ${SHELL_APP} FILTER /usr/include ${CMAKE_SOURCE_DIR}/tests/* ${CMAKE_BINARY_DIR}/*)
52endif()
53
54configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
55 "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
56 IMMEDIATE @ONLY)
57add_custom_target(uninstall "${CMAKE_COMMAND}"
58 -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
59
60# Doc
61OPTION(GENERATE_DOC "Enable qdoc generation" OFF)
62if(GENERATE_DOC)
63 message(STATUS "QDoc enabled.")
64 find_program(QDOC_BIN qdoc)
65 if(NOT QDOC_BIN)
66 message(FATAL_ERROR "qdoc command not found")
67 else()
68 add_subdirectory(doc)
69 endif()
70endif()35endif()
7136
72set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")37set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
7338
=== removed file 'SettingsComponents.qmlproject'
--- SettingsComponents.qmlproject 2013-06-07 15:39:04 +0000
+++ SettingsComponents.qmlproject 1970-01-01 00:00:00 +0000
@@ -1,23 +0,0 @@
1/* File generated by Qt Creator (with Ubuntu Plugin), version 2.7.0 */
2
3import QmlProject 1.1
4
5Project {
6 mainFile: "SettingsComponents.qml"
7
8 /* Include .qml, .js, and image files from current directory and subdirectories */
9 QmlFiles {
10 directory: "."
11 }
12 JavaScriptFiles {
13 directory: "."
14 }
15 ImageFiles {
16 directory: "."
17 }
18 Files {
19 filter: "*.desktop"
20 }
21 /* List of plugin directories passed to QML runtime */
22 importPaths: [ "." ,"/usr/bin","/usr/lib/x86_64-linux-gnu/qt5/qml" ]
23}
240
=== removed file 'cmake/modules/EnableCoverageReport.cmake'
--- cmake/modules/EnableCoverageReport.cmake 2013-10-04 10:52:27 +0000
+++ cmake/modules/EnableCoverageReport.cmake 1970-01-01 00:00:00 +0000
@@ -1,166 +0,0 @@
1# - Creates a special coverage build type and target on GCC.
2#
3# Defines a function ENABLE_COVERAGE_REPORT which generates the coverage target
4# for selected targets. Optional arguments to this function are used to filter
5# unwanted results using globbing expressions. Moreover targets with tests for
6# the source code can be specified to trigger regenerating the report if the
7# test has changed
8#
9# ENABLE_COVERAGE_REPORT(TARGETS target... [FILTER filter...] [TESTS test targets...])
10#
11# To generate a coverage report first build the project with
12# CMAKE_BUILD_TYPE=coverage, then call make test and afterwards make coverage.
13#
14# The coverage report is based on gcov. Depending on the availability of lcov
15# a HTML report will be generated and/or an XML report of gcovr is found.
16# The generated coverage target executes all found solutions. Special targets
17# exist to create e.g. only the xml report: coverage-xml.
18#
19# Copyright (C) 2010 by Johannes Wienke <jwienke at techfak dot uni-bielefeld dot de>
20#
21# This program is free software; you can redistribute it
22# and/or modify it under the terms of the GNU General
23# Public License as published by the Free Software Foundation;
24# either version 2, or (at your option)
25# any later version.
26#
27# This program is distributed in the hope that it will be useful,
28# but WITHOUT ANY WARRANTY; without even the implied warranty of
29# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30# GNU General Public License for more details.
31#
32
33INCLUDE(ParseArguments)
34
35FIND_PACKAGE(Lcov)
36FIND_PACKAGE(gcovr)
37
38FUNCTION(ENABLE_COVERAGE_REPORT)
39
40 # argument parsing
41 PARSE_ARGUMENTS(ARG "FILTER;TARGETS;TESTS" "" ${ARGN})
42
43 SET(COVERAGE_RAW_FILE "${CMAKE_BINARY_DIR}/coverage.raw.info")
44 SET(COVERAGE_FILTERED_FILE "${CMAKE_BINARY_DIR}/coverage.info")
45 SET(COVERAGE_REPORT_DIR "${CMAKE_BINARY_DIR}/coveragereport")
46 SET(COVERAGE_XML_FILE "${CMAKE_BINARY_DIR}/coverage.xml")
47 SET(COVERAGE_XML_COMMAND_FILE "${CMAKE_BINARY_DIR}/coverage-xml.cmake")
48
49 # decide if there is any tool to create coverage data
50 SET(TOOL_FOUND FALSE)
51 IF(LCOV_FOUND OR GCOVR_FOUND)
52 SET(TOOL_FOUND TRUE)
53 ENDIF()
54 IF(NOT TOOL_FOUND)
55 MESSAGE(STATUS "Cannot enable coverage targets because neither lcov nor gcovr are found.")
56 ENDIF()
57
58 STRING(TOLOWER "${CMAKE_BUILD_TYPE}" COVERAGE_BUILD_TYPE)
59 IF(CMAKE_COMPILER_IS_GNUCXX AND TOOL_FOUND AND "${COVERAGE_BUILD_TYPE}" MATCHES "coverage")
60
61 MESSAGE(STATUS "Coverage support enabled for targets: ${ARG_TARGETS}")
62
63 # create coverage build type
64 SET(CMAKE_CXX_FLAGS_COVERAGE ${CMAKE_CXX_FLAGS_DEBUG} PARENT_SCOPE)
65 SET(CMAKE_C_FLAGS_COVERAGE ${CMAKE_C_FLAGS_DEBUG} PARENT_SCOPE)
66 SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_CONFIGURATION_TYPES} coverage PARENT_SCOPE)
67
68 # instrument targets
69 SET_TARGET_PROPERTIES(${ARG_TARGETS} PROPERTIES COMPILE_FLAGS --coverage
70 LINK_FLAGS --coverage)
71
72 # html report
73 IF (LCOV_FOUND)
74
75 MESSAGE(STATUS "Enabling HTML coverage report")
76
77 # set up coverage target
78
79 ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_RAW_FILE}
80 COMMAND ${LCOV_EXECUTABLE} -c -d ${CMAKE_BINARY_DIR} -o ${COVERAGE_RAW_FILE}
81 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
82 COMMENT "Collecting coverage data"
83 DEPENDS ${ARG_TARGETS} ${ARG_TESTS}
84 VERBATIM)
85
86 # filter unwanted stuff
87 LIST(LENGTH ARG_FILTER FILTER_LENGTH)
88 IF(${FILTER_LENGTH} GREATER 0)
89 SET(FILTER COMMAND ${LCOV_EXECUTABLE})
90 FOREACH(F ${ARG_FILTER})
91 SET(FILTER ${FILTER} -r ${COVERAGE_FILTERED_FILE} ${F})
92 ENDFOREACH()
93 SET(FILTER ${FILTER} -o ${COVERAGE_FILTERED_FILE})
94 ELSE()
95 SET(FILTER "")
96 ENDIF()
97
98 ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_FILTERED_FILE}
99 COMMAND ${LCOV_EXECUTABLE} -e ${COVERAGE_RAW_FILE} "${CMAKE_SOURCE_DIR}*" -o ${COVERAGE_FILTERED_FILE}
100 ${FILTER}
101 DEPENDS ${COVERAGE_RAW_FILE}
102 COMMENT "Filtering recorded coverage data for project-relevant entries"
103 VERBATIM)
104 ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_REPORT_DIR}
105 COMMAND ${CMAKE_COMMAND} -E make_directory ${COVERAGE_REPORT_DIR}
106 COMMAND ${GENHTML_EXECUTABLE} --legend --show-details -t "${PROJECT_NAME} test coverage" -o ${COVERAGE_REPORT_DIR} ${COVERAGE_FILTERED_FILE}
107 DEPENDS ${COVERAGE_FILTERED_FILE}
108 COMMENT "Generating HTML coverage report in ${COVERAGE_REPORT_DIR}"
109 VERBATIM)
110
111 ADD_CUSTOM_TARGET(coverage-html
112 DEPENDS ${COVERAGE_REPORT_DIR})
113
114 ENDIF()
115
116 # xml coverage report
117 IF(GCOVR_FOUND)
118
119 MESSAGE(STATUS "Enabling XML coverage report")
120
121 # filter unwanted stuff
122 SET(GCOV_FILTER "")
123 LIST(LENGTH ARG_FILTER FILTER_LENGTH)
124 IF(${FILTER_LENGTH} GREATER 0)
125 FOREACH(F ${ARG_FILTER})
126 SET(GCOV_FILTER "${GCOV_FILTER} -e \"${F}\"")
127 ENDFOREACH()
128 ENDIF()
129
130 # gcovr cannot write directly to a file so the execution needs to
131 # be wrapped in a cmake file that generates the file output
132 FILE(WRITE ${COVERAGE_XML_COMMAND_FILE}
133 "SET(ENV{LANG} en)\n")
134 FILE(APPEND ${COVERAGE_XML_COMMAND_FILE}
135 "EXECUTE_PROCESS(COMMAND \"${GCOVR_EXECUTABLE}\" -x -r \"${CMAKE_SOURCE_DIR}\" ${GCOV_FILTER} OUTPUT_FILE \"${COVERAGE_XML_FILE}\" WORKING_DIRECTORY \"${CMAKE_BINARY_DIR}\")\n")
136
137 ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_XML_FILE}
138 COMMAND ${CMAKE_COMMAND} ARGS -P ${COVERAGE_XML_COMMAND_FILE}
139 COMMENT "Generating coverage XML report"
140 VERBATIM)
141
142 ADD_CUSTOM_TARGET(coverage-xml
143 DEPENDS ${COVERAGE_XML_FILE})
144
145 ENDIF()
146
147 # provide a global coverage target executing both steps if available
148 SET(GLOBAL_DEPENDS "")
149 IF(LCOV_FOUND)
150 LIST(APPEND GLOBAL_DEPENDS ${COVERAGE_REPORT_DIR})
151 ENDIF()
152 IF(GCOVR_FOUND)
153 LIST(APPEND GLOBAL_DEPENDS ${COVERAGE_XML_FILE})
154 ENDIF()
155 IF(LCOV_FOUND OR GCOVR_FOUND)
156 ADD_CUSTOM_TARGET(coverage
157 DEPENDS ${GLOBAL_DEPENDS})
158 ENDIF()
159
160 ENDIF()
161
162 # This gets rid of any stale .gcda files. Run this if a running a binary causes lots of messages about
163 # about a "merge mismatch for summaries".
164 ADD_CUSTOM_TARGET(clean-coverage COMMAND find ${CMAKE_BINARY_DIR} -name '*.gcda' | xargs rm -f)
165
166ENDFUNCTION()
1670
=== removed file 'cmake/modules/FindLcov.cmake'
--- cmake/modules/FindLcov.cmake 2013-10-04 10:52:27 +0000
+++ cmake/modules/FindLcov.cmake 1970-01-01 00:00:00 +0000
@@ -1,29 +0,0 @@
1# - Find lcov
2# Will define:
3#
4# LCOV_EXECUTABLE - the lcov binary
5# GENHTML_EXECUTABLE - the genhtml executable
6#
7# Copyright (C) 2010 by Johannes Wienke <jwienke at techfak dot uni-bielefeld dot de>
8#
9# This program is free software; you can redistribute it
10# and/or modify it under the terms of the GNU General
11# Public License as published by the Free Software Foundation;
12# either version 2, or (at your option)
13# any later version.
14#
15# This program is distributed in the hope that it will be useful,
16# but WITHOUT ANY WARRANTY; without even the implied warranty of
17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18# GNU General Public License for more details.
19#
20
21INCLUDE(FindPackageHandleStandardArgs)
22
23FIND_PROGRAM(LCOV_EXECUTABLE lcov)
24FIND_PROGRAM(GENHTML_EXECUTABLE genhtml)
25
26FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lcov DEFAULT_MSG LCOV_EXECUTABLE GENHTML_EXECUTABLE)
27
28# only visible in advanced view
29MARK_AS_ADVANCED(LCOV_EXECUTABLE GENHTML_EXECUTABLE)
300
=== removed file 'cmake/modules/Findgcovr.cmake'
--- cmake/modules/Findgcovr.cmake 2013-10-04 10:52:27 +0000
+++ cmake/modules/Findgcovr.cmake 1970-01-01 00:00:00 +0000
@@ -1,31 +0,0 @@
1# - Find gcovr scrip
2# Will define:
3#
4# GCOVR_EXECUTABLE - the gcovr script
5#
6# Uses:
7#
8# GCOVR_ROOT - root to search for the script
9#
10# Copyright (C) 2011 by Johannes Wienke <jwienke at techfak dot uni-bielefeld dot de>
11#
12# This program is free software; you can redistribute it
13# and/or modify it under the terms of the GNU General
14# Public License as published by the Free Software Foundation;
15# either version 2, or (at your option)
16# any later version.
17#
18# This program is distributed in the hope that it will be useful,
19# but WITHOUT ANY WARRANTY; without even the implied warranty of
20# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21# GNU General Public License for more details.
22#
23
24INCLUDE(FindPackageHandleStandardArgs)
25
26FIND_PROGRAM(GCOVR_EXECUTABLE gcovr HINTS ${GCOVR_ROOT} "${GCOVR_ROOT}/bin")
27
28FIND_PACKAGE_HANDLE_STANDARD_ARGS(gcovr DEFAULT_MSG GCOVR_EXECUTABLE)
29
30# only visible in advanced view
31MARK_AS_ADVANCED(GCOVR_EXECUTABLE)
320
=== removed file 'cmake/modules/ParseArguments.cmake'
--- cmake/modules/ParseArguments.cmake 2013-10-04 10:52:27 +0000
+++ cmake/modules/ParseArguments.cmake 1970-01-01 00:00:00 +0000
@@ -1,52 +0,0 @@
1# Parse arguments passed to a function into several lists separated by
2# upper-case identifiers and options that do not have an associated list e.g.:
3#
4# SET(arguments
5# hello OPTION3 world
6# LIST3 foo bar
7# OPTION2
8# LIST1 fuz baz
9# )
10# PARSE_ARGUMENTS(ARG "LIST1;LIST2;LIST3" "OPTION1;OPTION2;OPTION3" ${arguments})
11#
12# results in 7 distinct variables:
13# * ARG_DEFAULT_ARGS: hello;world
14# * ARG_LIST1: fuz;baz
15# * ARG_LIST2:
16# * ARG_LIST3: foo;bar
17# * ARG_OPTION1: FALSE
18# * ARG_OPTION2: TRUE
19# * ARG_OPTION3: TRUE
20#
21# taken from http://www.cmake.org/Wiki/CMakeMacroParseArguments
22
23MACRO(PARSE_ARGUMENTS prefix arg_names option_names)
24 SET(DEFAULT_ARGS)
25 FOREACH(arg_name ${arg_names})
26 SET(${prefix}_${arg_name})
27 ENDFOREACH(arg_name)
28 FOREACH(option ${option_names})
29 SET(${prefix}_${option} FALSE)
30 ENDFOREACH(option)
31
32 SET(current_arg_name DEFAULT_ARGS)
33 SET(current_arg_list)
34 FOREACH(arg ${ARGN})
35 SET(larg_names ${arg_names})
36 LIST(FIND larg_names "${arg}" is_arg_name)
37 IF (is_arg_name GREATER -1)
38 SET(${prefix}_${current_arg_name} ${current_arg_list})
39 SET(current_arg_name ${arg})
40 SET(current_arg_list)
41 ELSE (is_arg_name GREATER -1)
42 SET(loption_names ${option_names})
43 LIST(FIND loption_names "${arg}" is_option)
44 IF (is_option GREATER -1)
45 SET(${prefix}_${arg} TRUE)
46 ELSE (is_option GREATER -1)
47 SET(current_arg_list ${current_arg_list} ${arg})
48 ENDIF (is_option GREATER -1)
49 ENDIF (is_arg_name GREATER -1)
50 ENDFOREACH(arg)
51 SET(${prefix}_${current_arg_name} ${current_arg_list})
52ENDMACRO(PARSE_ARGUMENTS)
530
=== removed file 'cmake/modules/QmlPlugins.cmake'
--- cmake/modules/QmlPlugins.cmake 2015-04-07 09:44:47 +0000
+++ cmake/modules/QmlPlugins.cmake 1970-01-01 00:00:00 +0000
@@ -1,150 +0,0 @@
1# If you need to override the qmlplugindump binary, create the qmlplugin executable
2# target before loading this plugin.
3
4if(NOT TARGET qmlplugindump)
5 find_program(qmlplugindump_exe qmlplugindump)
6
7 if(NOT qmlplugindump_exe)
8 msg(FATAL_ERROR "Could not locate qmlplugindump.")
9 endif()
10
11 add_executable(qmlplugindump IMPORTED)
12 set_target_properties(qmlplugindump PROPERTIES IMPORTED_LOCATION ${qmlplugindump_exe})
13endif()
14
15#
16# A custom target for building the qmltypes files manually.
17#
18if (NOT TARGET qmltypes)
19 add_custom_target(qmltypes)
20endif()
21
22# Creates a target for copying resource files into build dir and optionally installing them.
23#
24# Files will be copied into ${BINARY_DIR}/${path} or ${CMAKE_CURRENT_BINARY_DIR} and installed
25# into ${DESTINATION}/${path}.
26#
27# Resource file names are matched against {*.{qml,js,jpg,png,sci,svg},qmldir}.
28#
29# export_qmlfiles(plugin path
30# [SEARCH_PATH path] # Path to search for resources in (defaults to ${CMAKE_CURRENT_SOURCE_DIR})
31# [BINARY_DIR path]
32# [DESTINATION path]
33# [TARGET_PREFIX string] # Will be prefixed to the target name
34# )
35#
36# Created target:
37# - ${TARGET_PREFIX}${plugin}-qmlfiles - Copies resources into the binary dir.
38
39macro(export_qmlfiles PLUGIN PATH)
40 set(single SEARCH_PATH BINARY_DIR DESTINATION TARGET_PREFIX)
41 cmake_parse_arguments(QMLFILES "" "${single}" "" ${ARGN})
42
43 if(NOT QMLFILES_SEARCH_PATH)
44 set(QMLFILES_SEARCH_PATH ${CMAKE_CURRENT_SOURCE_DIR})
45 endif()
46
47 if(QMLFILES_BINARY_DIR)
48 set(qmlfiles_dir ${QMLFILES_BINARY_DIR}/${PATH})
49 else()
50 set(qmlfiles_dir ${CMAKE_CURRENT_BINARY_DIR})
51 endif()
52
53 file(GLOB QMLFILES
54 ${QMLFILES_SEARCH_PATH}/*.qml
55 ${QMLFILES_SEARCH_PATH}/*.js
56 ${QMLFILES_SEARCH_PATH}/*.jpg
57 ${QMLFILES_SEARCH_PATH}/*.png
58 ${QMLFILES_SEARCH_PATH}/*.sci
59 ${QMLFILES_SEARCH_PATH}/*.svg
60 ${QMLFILES_SEARCH_PATH}/*.qmltypes
61 ${QMLFILES_SEARCH_PATH}/qmldir
62 )
63
64 execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${qmlfiles_dir})
65
66 # copy the files
67 add_custom_target(${QMLFILES_TARGET_PREFIX}${PLUGIN}-qmlfiles ALL
68 COMMAND cp ${QMLFILES} ${qmlfiles_dir}
69 DEPENDS ${QMLFILES}
70 SOURCES ${QMLFILES}
71 )
72
73 if(QMLFILES_DESTINATION)
74 # install the qmlfiles file.
75 install(FILES ${QMLFILES}
76 DESTINATION ${QMLFILES_DESTINATION}/${PATH}
77 )
78 endif()
79endmacro()
80
81
82# Creates a target for generating the typeinfo file for a QML plugin and/or installs the plugin
83# targets.
84#
85# Files will be copied into ${BINARY_DIR}/${path} or ${CMAKE_CURRENT_BINARY_DIR} and installed
86# into ${DESTINATION}/${path}. If you don't pass BINARY_DIR, it's assumed that current source
87# path ends with ${path}.
88#
89# The generated file will be named after the last segment of the plugin name, e.g. Foo.qmltypes.
90#
91# export_qmlplugin(plugin version path
92# [BINARY_DIR path]
93# [DESTINATION path]
94# [TARGET_PREFIX string] # Will be prefixed to the target name
95# [ENVIRONMENT string] # Will be added to qmlplugindump's env
96# [TARGETS target1 [target2 ...]] # Targets to depend on and install (e.g. the plugin shared object)
97# [NO_TYPES] # Do not create the qmltypes target
98# )
99#
100# Created target:
101# - ${TARGET_PREFIX}${plugin}-qmltypes - Generates the qmltypes file in the source dir.
102# It will be made a dependency of the "qmltypes" target.
103
104macro(export_qmlplugin PLUGIN VERSION PATH)
105 set(options NO_TYPES)
106 set(single BINARY_DIR DESTINATION TARGET_PREFIX ENVIRONMENT)
107 set(multi TARGETS)
108 cmake_parse_arguments(QMLPLUGIN "${options}" "${single}" "${multi}" ${ARGN})
109
110 get_target_property(qmlplugindump_executable qmlplugindump LOCATION)
111
112 if(QMLPLUGIN_BINARY_DIR)
113 set(qmlplugin_dir ${QMLPLUGIN_BINARY_DIR}/${PATH})
114 else()
115 # Find import path to point qmlplugindump at
116 string(REGEX REPLACE "/${PATH}$" "" QMLPLUGIN_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
117 set(qmlplugin_dir ${CMAKE_CURRENT_BINARY_DIR})
118 endif()
119
120 if(NOT QMLPLUGIN_NO_TYPES)
121 # Relative path for the module
122 string(REPLACE "${CMAKE_BINARY_DIR}/" "" QMLPLUGIN_MODULE_DIR "${QMLPLUGIN_BINARY_DIR}")
123
124 # Find the last segment of the plugin name to use as qmltypes basename
125 string(REGEX MATCH "[^.]+$" plugin_suffix ${PLUGIN})
126 set(target_prefix ${QMLPLUGIN_TARGET_PREFIX}${PLUGIN})
127 set(qmltypes_path ${CMAKE_CURRENT_SOURCE_DIR}/${plugin_suffix}.qmltypes)
128
129 add_custom_target(${target_prefix}-qmltypes
130 COMMAND env ${QMLPLUGIN_ENVIRONMENT} ${qmlplugindump_executable} -notrelocatable
131 ${PLUGIN} ${VERSION} ${QMLPLUGIN_MODULE_DIR} > ${qmltypes_path}
132 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
133 )
134 add_dependencies(${target_prefix}-qmltypes ${target_prefix}-qmlfiles ${QMLPLUGIN_TARGETS})
135 add_dependencies(qmltypes ${target_prefix}-qmltypes)
136 endif()
137
138 set_target_properties(${QMLPLUGIN_TARGETS} PROPERTIES
139 ARCHIVE_OUTPUT_DIRECTORY ${qmlplugin_dir}
140 LIBRARY_OUTPUT_DIRECTORY ${qmlplugin_dir}
141 RUNTIME_OUTPUT_DIRECTORY ${qmlplugin_dir}
142 )
143
144 if (QMLPLUGIN_DESTINATION)
145 # Install additional targets
146 install(TARGETS ${QMLPLUGIN_TARGETS}
147 DESTINATION ${QMLPLUGIN_DESTINATION}/${PATH}
148 )
149 endif()
150endmacro()
1510
=== modified file 'cmake/modules/QmlTest.cmake'
--- cmake/modules/QmlTest.cmake 2015-03-20 15:49:18 +0000
+++ cmake/modules/QmlTest.cmake 2016-03-24 12:20:44 +0000
@@ -1,120 +1,313 @@
1# add_qml_test(path component_name [NO_ADD_TEST] [NO_TARGETS]1# If you need to override the qmlscene or qmltestrunner executables,
2# [TARGETS target1 [target2 [...]]]2# create the corresponding executable target.
3# [IMPORT_PATHS import_path1 [import_path2 [...]]3
4# [PROPERTIES prop1 value1 [prop2 value2 [...]]])4# These functions respect the global STDOUT_LOGGER and ARTIFACTS_DIR variables.
5#5
6# NO_ADD_TEST will prevent adding the test to the "test" target6# You can use those with cmake_parse_arguments
7# NO_TARGETS will prevent adding the test to any targets7# if you need to wrap and mangle arguments.
8# TARGETS lists the targets the test should be added to8set(QMLTEST_OPTIONS ADD_TEST CACHE INTERNAL "")
9# IMPORT_PATHS will pass those paths to qmltestrunner as "-import" arguments9set(QMLTEST_SINGLE ITERATIONS ARG_PREFIX CACHE INTERNAL "")
10# PROPERTIES will be set on the target and test target. See CMake's set_target_properties()10set(QMLTEST_MULTI ARGS ENVIRONMENT DEPENDS IMPORT_PATHS TARGETS CACHE INTERNAL "")
11
12# import_executables(name1 [name2 [...]]
13# [OPTIONAL] # continue when not found
14# )
15#
16# This will find the named executables and import them
17# to an imported target of the same name.
18
19function(import_executables)
20 cmake_parse_arguments(QMLTEST "OPTIONAL" "" "" ${ARGN})
21
22 foreach(NAME ${QMLTEST_UNPARSED_ARGUMENTS})
23 if(NOT TARGET ${NAME})
24 add_executable(${NAME} IMPORTED GLOBAL)
25 find_program(${NAME}_exe ${NAME})
26
27 if(NOT QMLTEST_OPTIONAL AND NOT ${NAME}_exe)
28 message(FATAL_ERROR "Could not locate ${NAME}.")
29 elseif(NOT ${NAME}_exe)
30 message(STATUS "Could not locate ${NAME}, skipping.")
31 else()
32 set_target_properties(${NAME} PROPERTIES IMPORTED_LOCATION ${${NAME}_exe})
33 endif()
34 endif()
35 endforeach()
36endfunction()
37
38
39# add_qml_test(path component_name
40# [...]
41# )
42#
43# Add test targets for ${component_name} under ${path}. It's assumed
44# that the test file is named ${path}/tst_${component_name}.qml.
45#
46# This function wraps add_manual_qml_test and add_qml_unittest,
47# see below for available arguments.
48
49function(add_qml_test PATH COMPONENT_NAME)
50 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
51 mangle_arguments()
52
53 add_qml_unittest(${ARGV})
54 add_manual_qml_test(${ARGV})
55endfunction()
56
57
58# add_qml_unittest(path component_name
59# [...]
60# )
61#
62# Add test targets for ${component_name} under ${path}. It's assumed
63# that the test file is named ${path}/tst_${component_name}.qml.
64#
65# This function wraps add_executable_test, see below for available arguments.
66
67function(add_qml_unittest PATH COMPONENT_NAME)
68 import_executables(qmltestrunner)
69
70 add_executable_test(${COMPONENT_NAME} qmltestrunner
71 ${ARGN}
72 ARGS -input ${CMAKE_CURRENT_SOURCE_DIR}/${PATH}/tst_${COMPONENT_NAME}.qml ${QMLTEST_ARGS}
73 )
74endfunction()
75
76
77# add_manual_qml_test(path component_name
78# [...]
79# )
80#
81# Add manual test targets for ${component_name} under ${path}. It's assumed
82# that the test file is named ${path}/tst_${component_name}.qml.
83#
84# This function wraps add_manual_test, see below for available arguments.
85
86function(add_manual_qml_test PATH COMPONENT_NAME)
87 import_executables(qmlscene)
88 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
89
90 add_manual_test(${COMPONENT_NAME} qmlscene
91 ${ARGN}
92 ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${PATH}/tst_${COMPONENT_NAME}.qml ${QMLTEST_ARGS}
93 )
94endfunction()
95
96
97# add_executable_test(target component_name
98# [...] # see doc for add_manual_qml_test for common arguments
99# [ADD_TEST] # whether to add to the "test" target
100# [ARG_PREFIX arg_prefix] # prefix logging arguments with this string
101# [ARGS] arg1 [arg2 [...]] # pass these arguments to the test executable
102# [TARGETS target1 [target2 [...]]] # make the listed targets depend on this test
103# # if a corresponding xvfbtarget1, xvfbtarget2 etc. exists,
104# # this test running under xvfb will be added as a dependency
105# # of those targets
106# [ITERATIONS count] # run this test as a benchmark for ${count} iterations
107# )
108#
109# Logging options in the standard form of "-o filename,format"
110# will be appended to the arguments list, prefixed with ARG_PREFIX.
111# XUnitXML files will be stored in current binary dir or under
112# ARTIFACTS_DIR, if set.
113#
114# Three targets will be created:
115# - test${component_name} - Runs the test
116# - xvfbtest${component_name} - Runs the test under xvfb
117# - gdbtest${component_name} - Runs the test under gdb
118
119function(add_executable_test COMPONENT_NAME TARGET)
120 import_executables(gdb xvfb-run OPTIONAL)
121
122 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
123 mangle_arguments()
124
125 if(ARTIFACTS_DIR)
126 file(RELATIVE_PATH path ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
127 file(MAKE_DIRECTORY ${ARTIFACTS_DIR}/${path})
128 set(file_logger -o ${ARTIFACTS_DIR}/${path}/test${COMPONENT_NAME}.xml,xunitxml)
129 else()
130 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
131 set(file_logger -o ${CMAKE_CURRENT_BINARY_DIR}/test${COMPONENT_NAME}.xml,xunitxml)
132 endif()
133
134 bake_arguments("${QMLTEST_ARG_PREFIX}" args ${iterations} ${file_logger} ${STDOUT_LOGGER})
135
136 set(qmltest_command
137 $<TARGET_FILE:${TARGET}>
138 ${QMLTEST_ARGS}
139 ${args}
140 )
141
142 add_qmltest_target(test${COMPONENT_NAME} ${TARGET}
143 COMMAND ${qmltest_command}
144 ${depends}
145 ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
146 ${add_test}
147 ${targets}
148 )
149
150 if(TARGET xvfb-run)
151 add_qmltest_target(xvfbtest${COMPONENT_NAME} ${TARGET}
152 COMMAND $<TARGET_FILE:xvfb-run> --server-args "-screen 0 1024x768x24" --auto-servernum ${qmltest_command}
153 ${depends}
154 ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT} LD_PRELOAD=/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/mesa/libGL.so.1
155 TARGETS ${xvfb_targets}
156 )
157 endif()
158
159 if(TARGET gdb)
160 add_qmltest_target(gdbtest${COMPONENT_NAME} ${TARGET}
161 COMMAND $<TARGET_FILE:gdb> -ex run -args ${qmltest_command}
162 ${depends}
163 ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
164 )
165 endif()
166endfunction()
167
168
169# add_manual_test(target component_name
170# [DEPENDS target1 [target2 [...]]] # make this test depend on the specified targets
171# [IMPORT_PATHS import_path1 [import_path2 [...]] # use these QML import paths
172# # (they're searched first to last)
173# [ENVIRONMENT var1=value1 [var2=value2 [...]]] # set these environment variables
174# )
11#175#
12# Two targets will be created:176# Two targets will be created:
13# - testComponentName - Runs the test with qmltestrunner177# - try${component_name} - Runs the test for manual interaction
14# - tryComponentName - Runs the test with uqmlscene, for manual interaction178# - gdbtry${component_name} - Runs the test under gdb
15#179
16# To change/set a default value for the whole test suite, prior to calling add_qml_test, set:180function(add_manual_test COMPONENT_NAME TARGET)
17# qmltest_DEFAULT_NO_ADD_TEST (default: FALSE)181 import_executables(gdb OPTIONAL)
18# qmltest_DEFAULT_TARGETS182
19# qmltest_DEFAULT_IMPORT_PATHS183 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
20# qmltest_DEFAULT_PROPERTIES184 mangle_arguments()
21185
22find_program(qmltestrunner_exe qmltestrunner)186 bake_arguments("${QMLTEST_ARG_PREFIX}" args -qmljsdebugger=port:3768)
23find_program(qmlscene_exe qmlscene)187
24188 set(qmltry_command
25if(NOT qmltestrunner_exe)189 $<TARGET_FILE:${TARGET}>
26 msg(FATAL_ERROR "Could not locate qmltestrunner.")190 ${QMLTEST_ARGS}
27endif()191 ${args}
28192 )
29macro(add_manual_qml_test SUBPATH COMPONENT_NAME)193
30 set(options NO_ADD_TEST NO_TARGETS)194 add_qmltest_target(try${COMPONENT_NAME} ${TARGET}
31 set(multi_value_keywords IMPORT_PATHS TARGETS PROPERTIES ENVIRONMENT)195 COMMAND ${qmltry_command}
32196 ${depends}
33 cmake_parse_arguments(qmltest "${options}" "" "${multi_value_keywords}" ${ARGN})197 ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
34198 )
35 set(qmlscene_TARGET try${COMPONENT_NAME})199
36 set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})200 if(TARGET gdb)
37201 add_qmltest_target(gdbtry${COMPONENT_NAME} ${TARGET}
38 set(qmlscene_imports "")202 COMMAND $<TARGET_FILE:gdb> -ex run -args ${qmltry_command}
39 if(NOT "${qmltest_IMPORT_PATHS}" STREQUAL "")203 ${depends}
40 foreach(IMPORT_PATH ${qmltest_IMPORT_PATHS})204 ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
41 list(APPEND qmlscene_imports "-I")205 )
42 list(APPEND qmlscene_imports ${IMPORT_PATH})206 endif()
43 endforeach(IMPORT_PATH)207endfunction()
44 elseif(NOT "${qmltest_DEFAULT_IMPORT_PATHS}" STREQUAL "")208
45 foreach(IMPORT_PATH ${qmltest_DEFAULT_IMPORT_PATHS})209
46 list(APPEND qmlscene_imports "-I")210################### INTERNAL ####################
47 list(APPEND qmlscene_imports ${IMPORT_PATH})211
48 endforeach(IMPORT_PATH)212# add_qmltest_target(target_name target
49 endif()213# COMMAND test_exe [arg1 [...]] # execute this test with arguments
50214# [...] # see above for available arguments:
51 set(qmlscene_command215# # ADD_TEST, ENVIRONMENT, DEPENDS and TARGETS
52 env ${qmltest_ENVIRONMENT}216# )
53 ${qmlscene_exe} ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml217
54 ${qmlscene_imports}218function(add_qmltest_target TARGET_NAME TARGET)
55 )219 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "COMMAND;${QMLTEST_MULTI}" ${ARGN})
56 add_custom_target(${qmlscene_TARGET} ${qmlscene_command})220 mangle_arguments()
57221
58endmacro(add_manual_qml_test)222 # Additional arguments
59223 string(TOLOWER "${CMAKE_GENERATOR}" cmake_generator_lower)
60macro(add_qml_test SUBPATH COMPONENT_NAME)224 if(cmake_generator_lower STREQUAL "unix makefiles")
61 set(options NO_ADD_TEST NO_TARGETS)225 set(function "$(FUNCTION)")
62 set(multi_value_keywords IMPORT_PATHS TARGETS PROPERTIES ENVIRONMENT)226 endif()
63227
64 cmake_parse_arguments(qmltest "${options}" "" "${multi_value_keywords}" ${ARGN})228 add_custom_target(${TARGET_NAME}
65229 env ${QMLTEST_ENVIRONMENT}
66 set(qmltest_TARGET test${COMPONENT_NAME})230 ${QMLTEST_COMMAND} ${function}
67 set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})231 DEPENDS ${TARGET} ${QMLTEST_DEPENDS}
68232 )
69 set(qmltestrunner_imports "")233
70 if(NOT "${qmltest_IMPORT_PATHS}" STREQUAL "")234 if(QMLTEST_ADD_TEST)
71 foreach(IMPORT_PATH ${qmltest_IMPORT_PATHS})235 add_test(
72 list(APPEND qmltestrunner_imports "-import")236 NAME ${TARGET_NAME}
73 list(APPEND qmltestrunner_imports ${IMPORT_PATH})237 COMMAND ${QMLTEST_COMMAND}
74 endforeach(IMPORT_PATH)238 )
75 elseif(NOT "${qmltest_DEFAULT_IMPORT_PATHS}" STREQUAL "")239
76 foreach(IMPORT_PATH ${qmltest_DEFAULT_IMPORT_PATHS})240 foreach(ENV ${QMLTEST_ENVIRONMENT})
77 list(APPEND qmltestrunner_imports "-import")241 set_property(TEST ${TARGET_NAME} APPEND PROPERTY ENVIRONMENT ${ENV})
78 list(APPEND qmltestrunner_imports ${IMPORT_PATH})242 endforeach()
79 endforeach(IMPORT_PATH)243
80 endif()244 set_property(TEST ${TARGET_NAME} APPEND PROPERTY DEPENDS ${TARGET})
81245 foreach(DEPEND ${DEPENDS})
82 set(qmltest_command246 set_property(TEST ${TARGET_NAME} APPEND PROPERTY DEPENDS ${DEPEND})
83 env ${qmltest_ENVIRONMENT}247 endforeach()
84 ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml248 endif()
85 ${qmltestrunner_imports}249
86 -o ${CMAKE_BINARY_DIR}/${qmltest_TARGET}.xml,xunitxml250 foreach(UPSTREAM_TARGET ${QMLTEST_TARGETS})
87 -o -,txt251 add_dependencies(${UPSTREAM_TARGET} ${TARGET_NAME})
88 )252 endforeach()
89 add_custom_target(${qmltest_TARGET} ${qmltest_command})253endfunction()
90254
91 if(NOT "${qmltest_PROPERTIES}" STREQUAL "")255
92 set_target_properties(${qmltest_TARGET} PROPERTIES ${qmltest_PROPERTIES})256# mangle_arguments(${ARGN})
93 elseif(NOT "${qmltest_DEFAULT_PROPERTIES}" STREQUAL "")257#
94 set_target_properties(${qmltest_TARGET} PROPERTIES ${qmltest_DEFAULT_PROPERTIES})258# Verify there were no unparsed arguments and
95 endif()259# mangle the known ones for further processing.
96260
97 if("${qmltest_NO_ADD_TEST}" STREQUAL FALSE AND NOT "${qmltest_DEFAULT_NO_ADD_TEST}" STREQUAL "TRUE")261macro(mangle_arguments)
98 add_test(${qmltest_TARGET} ${qmltest_command})262 if(QMLTEST_UNPARSED_ARGUMENTS)
99263 message(FATAL_ERROR "Unexpected arguments: ${QMLTEST_UNPARSED_ARGUMENTS}")
100 if(NOT "${qmltest_UNPARSED_ARGUMENTS}" STREQUAL "")264 endif()
101 set_tests_properties(${qmltest_TARGET} PROPERTIES ${qmltest_PROPERTIES})265
102 elseif(NOT "${qmltest_DEFAULT_PROPERTIES}" STREQUAL "")266 if(QMLTEST_ADD_TEST)
103 set_tests_properties(${qmltest_TARGET} PROPERTIES ${qmltest_DEFAULT_PROPERTIES})267 set(add_test ADD_TEST)
104 endif()268 endif()
105 endif("${qmltest_NO_ADD_TEST}" STREQUAL FALSE AND NOT "${qmltest_DEFAULT_NO_ADD_TEST}" STREQUAL "TRUE")269
106270 if(QMLTEST_IMPORT_PATHS)
107 if("${qmltest_NO_TARGETS}" STREQUAL "FALSE")271 string(REPLACE ";" ":" imports "${QMLTEST_IMPORT_PATHS}")
108 if(NOT "${qmltest_TARGETS}" STREQUAL "")272 endif()
109 foreach(TARGET ${qmltest_TARGETS})273
110 add_dependencies(${TARGET} ${qmltest_TARGET})274 if(QMLTEST_ITERATIONS)
111 endforeach(TARGET)275 set(iterations -iterations ${QMLTEST_ITERATIONS})
112 elseif(NOT "${qmltest_DEFAULT_TARGETS}" STREQUAL "")276 endif()
113 foreach(TARGET ${qmltest_DEFAULT_TARGETS})277
114 add_dependencies(${TARGET} ${qmltest_TARGET})278 if(QMLTEST_DEPENDS)
115 endforeach(TARGET)279 set(depends DEPENDS ${QMLTEST_DEPENDS})
116 endif()280 endif()
117 endif("${qmltest_NO_TARGETS}" STREQUAL "FALSE")281
118282 if(QMLTEST_TARGETS)
119 add_manual_qml_test(${SUBPATH} ${COMPONENT_NAME} ${ARGN})283 set(targets TARGETS ${QMLTEST_TARGETS})
120endmacro(add_qml_test)284 endif()
285
286 set(xvfb_targets "")
287 foreach(target ${QMLTEST_TARGETS})
288 if(TARGET xvfb${target})
289 list(APPEND xvfb_targets xvfb${target})
290 endif()
291 endforeach()
292 set(xvfb_targets "${xvfb_targets}" PARENT_SCOPE)
293endmacro()
294
295
296# bake_arguments(prefix output
297# arg1 [arg2 [...]]
298# )
299#
300# If set, add the argument prefix before every passed
301# argument and store the result in ${OUTPUT} variable.
302
303function(bake_arguments PREFIX OUTPUT)
304 set(args "${ARGN}")
305 if(PREFIX)
306 set(args "")
307 foreach(arg ${ARGN})
308 list(APPEND args ${PREFIX})
309 list(APPEND args ${arg})
310 endforeach()
311 endif()
312 set(${OUTPUT} "${args}" PARENT_SCOPE)
313endfunction()
121314
=== removed file 'cmake_uninstall.cmake.in'
--- cmake_uninstall.cmake.in 2013-05-16 17:18:42 +0000
+++ cmake_uninstall.cmake.in 1970-01-01 00:00:00 +0000
@@ -1,21 +0,0 @@
1IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
2 MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
3ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
4
5FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
6STRING(REGEX REPLACE "\n" ";" files "${files}")
7FOREACH(file ${files})
8 MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
9 IF(EXISTS "$ENV{DESTDIR}${file}")
10 EXEC_PROGRAM(
11 "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
12 OUTPUT_VARIABLE rm_out
13 RETURN_VALUE rm_retval
14 )
15 IF(NOT "${rm_retval}" STREQUAL 0)
16 MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
17 ENDIF(NOT "${rm_retval}" STREQUAL 0)
18 ELSE(EXISTS "$ENV{DESTDIR}${file}")
19 MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.")
20 ENDIF(EXISTS "$ENV{DESTDIR}${file}")
21ENDFOREACH(file)
220
=== modified file 'debian/changelog'
--- debian/changelog 2016-03-21 16:54:09 +0000
+++ debian/changelog 2016-03-24 12:20:44 +0000
@@ -52,6 +52,12 @@
5252
53 -- Zoltan Balogh <zoltan.balogh@canonical.com> Wed, 02 Mar 2016 21:39:36 +000053 -- Zoltan Balogh <zoltan.balogh@canonical.com> Wed, 02 Mar 2016 21:39:36 +0000
5454
55ubuntu-system-components (0.7-0ubuntu1) UNRELEASED; urgency=medium
56
57 * New package name: ubuntu-system-components
58
59 -- Michal Sawicz <michal.sawicz@canonical.com> Fri, 29 Jan 2016 00:10:05 +0100
60
55ubuntu-settings-components (0.6+16.04.20151102-0ubuntu1) xenial; urgency=medium61ubuntu-settings-components (0.6+16.04.20151102-0ubuntu1) xenial; urgency=medium
5662
57 [ CI Train Bot ]63 [ CI Train Bot ]
5864
=== modified file 'debian/control'
--- debian/control 2016-03-01 15:37:36 +0000
+++ debian/control 2016-03-24 12:20:44 +0000
@@ -1,10 +1,12 @@
1Source: ubuntu-settings-components1Source: ubuntu-system-components
2Section: misc2Section: misc
3Priority: optional3Priority: optional
4Maintainer: Andrea Cimitan <andrea.cimitan@canonical.com>4Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
5Build-Depends: cmake,5Build-Depends: cmake,
6 cmake-extras (>= 0.6),
6 debhelper (>= 9),7 debhelper (>= 9),
7 pkg-config,8 pkg-config,
9 python3:any,
8 qml-module-qtquick-layouts,10 qml-module-qtquick-layouts,
9 qt5-default,11 qt5-default,
10 qtbase5-private-dev,12 qtbase5-private-dev,
@@ -26,13 +28,24 @@
26Package: qtdeclarative5-ubuntu-settings-components28Package: qtdeclarative5-ubuntu-settings-components
27Architecture: any29Architecture: any
28Multi-Arch: same30Multi-Arch: same
31Section: oldlibs
32Depends: qml-module-ubuntu-system-components, ${misc:Depends}
33Description: transitional dummy package for Ubuntu system components
34 Ubuntu system components for Unity
35 .
36 This is a transitional dummy package which can be safely removed.
37
38Package: qml-module-ubuntu-system-components
39Architecture: any
40Multi-Arch: same
29Pre-Depends: dpkg (>= 1.15.6~)41Pre-Depends: dpkg (>= 1.15.6~)
30Depends: qml-module-qtquick-layouts,42Depends: qml-module-qtquick-layouts,
31 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.1) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.1),43 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.1) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.1),
32 suru-icon-theme,44 suru-icon-theme,
33 ${misc:Depends},45 ${misc:Depends},
34 ${shlibs:Depends},46 ${shlibs:Depends},
35Breaks: qtdeclarative5-ubuntu-settings-components-assets (<< 0.3),
36Replaces: qtdeclarative5-ubuntu-settings-components-assets (<< 0.3),
37Description: Ubuntu Settings Components
38 Ubuntu settings components for Unity
39\ No newline at end of file47\ No newline at end of file
48Breaks: qtdeclarative5-ubuntu-settings-components (<< 0.7),
49Replaces: qtdeclarative5-ubuntu-settings-components (<< 0.7),
50Provides: qtdeclarative5-ubuntu-settings-components,
51Description: Ubuntu System Components
52 Ubuntu system components for Unity
4053
=== added file 'debian/qml-module-ubuntu-system-components.install'
--- debian/qml-module-ubuntu-system-components.install 1970-01-01 00:00:00 +0000
+++ debian/qml-module-ubuntu-system-components.install 2016-03-24 12:20:44 +0000
@@ -0,0 +1,2 @@
1usr/lib/*/qt5/qml/Ubuntu/Settings/Components
2usr/lib/*/qt5/qml/Ubuntu/Settings/Menus
03
=== added directory 'debian/tests'
=== added file 'debian/tests/control'
--- debian/tests/control 1970-01-01 00:00:00 +0000
+++ debian/tests/control 2016-03-24 12:20:44 +0000
@@ -0,0 +1,4 @@
1Tests: qmluitests.sh
2Depends: @,
3 @builddeps@,
4 xvfb,
05
=== added file 'debian/tests/qmluitests.sh'
--- debian/tests/qmluitests.sh 1970-01-01 00:00:00 +0000
+++ debian/tests/qmluitests.sh 2016-03-24 12:20:44 +0000
@@ -0,0 +1,5 @@
1#!/bin/sh
2
3dh_auto_configure -- -DARTIFACTS_DIR=${ADT_ARTIFACTS}
4
5dh_auto_build --parallel -- -k xvfballtests
06
=== modified file 'plugins/Ubuntu/Settings/Components/CMakeLists.txt'
--- plugins/Ubuntu/Settings/Components/CMakeLists.txt 2015-04-07 09:42:19 +0000
+++ plugins/Ubuntu/Settings/Components/CMakeLists.txt 2016-03-24 12:20:44 +0000
@@ -1,12 +1,5 @@
1project(UbuntuSettingsComponentsQml)1project(UbuntuSettingsComponentsQml)
22
3find_package(Qt5Core REQUIRED)
4
5include_directories(
6 ${CMAKE_CURRENT_SOURCE_DIR}
7 ${CMAKE_CURRENT_BINARY_DIR}
8)
9
10add_definitions(-DUBUNTUSETTINGSCOMPONENTS_LIBRARY)3add_definitions(-DUBUNTUSETTINGSCOMPONENTS_LIBRARY)
114
12add_library(UbuntuSettingsComponentsQml MODULE5add_library(UbuntuSettingsComponentsQml MODULE
@@ -14,6 +7,10 @@
14 serverpropertysynchroniser.cpp7 serverpropertysynchroniser.cpp
15)8)
169
17qt5_use_modules(UbuntuSettingsComponentsQml Core Qml Quick)10target_link_libraries(UbuntuSettingsComponentsQml
11 Qt5::Core
12 Qt5::Qml
13 Qt5::Quick
14)
1815
19add_usc_plugin(Ubuntu.Settings.Components 0.1 Ubuntu/Settings/Components TARGETS UbuntuSettingsComponentsQml)16add_usc_plugin(Ubuntu.Settings.Components 0.1 Ubuntu/Settings/Components TARGETS UbuntuSettingsComponentsQml)
2017
=== modified file 'plugins/Ubuntu/Settings/Components/Components.qmltypes'
--- plugins/Ubuntu/Settings/Components/Components.qmltypes 2015-04-07 09:42:19 +0000
+++ plugins/Ubuntu/Settings/Components/Components.qmltypes 2016-03-24 12:20:44 +0000
@@ -1,4 +1,4 @@
1import QtQuick.tooling 1.11import QtQuick.tooling 1.2
22
3// This file describes the plugin-supplied types contained in the library.3// This file describes the plugin-supplied types contained in the library.
4// It is used for QML tooling purposes only.4// It is used for QML tooling purposes only.
@@ -7,6 +7,22 @@
7// 'qmlplugindump -notrelocatable Ubuntu.Settings.Components 0.1 plugins'7// 'qmlplugindump -notrelocatable Ubuntu.Settings.Components 0.1 plugins'
88
9Module {9Module {
10 dependencies: [
11 "QtFeedback 5.0",
12 "QtGraphicalEffects 1.0",
13 "QtQml 2.0",
14 "QtQuick 2.4",
15 "QtQuick.Layouts 1.1",
16 "QtQuick.Window 2.2",
17 "Ubuntu.Components 1.3",
18 "Ubuntu.Components.ListItems 1.3",
19 "Ubuntu.Components.Popups 1.3",
20 "Ubuntu.Components.Styles 1.3",
21 "Ubuntu.Components.Themes 1.3",
22 "Ubuntu.Components.Themes.Ambiance 1.3",
23 "Ubuntu.PerformanceMetrics 1.0",
24 "com.canonical.Oxide 1.9"
25 ]
10 Component {26 Component {
11 name: "ServerPropertySynchroniser"27 name: "ServerPropertySynchroniser"
12 prototype: "QObject"28 prototype: "QObject"
@@ -70,4 +86,52 @@
70 Method { name: "activate" }86 Method { name: "activate" }
71 Method { name: "reset" }87 Method { name: "reset" }
72 }88 }
89 Component {
90 prototype: "Palette_QMLTYPE_2"
91 name: "Palette"
92 exports: ["Palette -1.-1"]
93 exportMetaObjectRevisions: [-1]
94 isComposite: true
95 }
96 Component {
97 prototype: "QObject"
98 name: "PaletteValues"
99 exports: ["PaletteValues -1.-1"]
100 exportMetaObjectRevisions: [-1]
101 isComposite: true
102 Property { name: "background"; type: "QColor" }
103 Property { name: "backgroundText"; type: "QColor" }
104 Property { name: "base"; type: "QColor" }
105 Property { name: "baseText"; type: "QColor" }
106 Property { name: "foreground"; type: "QColor" }
107 Property { name: "foregroundText"; type: "QColor" }
108 Property { name: "overlay"; type: "QColor" }
109 Property { name: "overlayText"; type: "QColor" }
110 Property { name: "field"; type: "QColor" }
111 Property { name: "fieldText"; type: "QColor" }
112 Property { name: "selection"; type: "QColor" }
113 }
114 Component {
115 prototype: "QObject"
116 name: "UbuntuColors"
117 exports: ["UbuntuColors -1.-1"]
118 exportMetaObjectRevisions: [-1]
119 isComposite: true
120 isCreatable: false
121 isSingleton: true
122 Property { name: "orange"; type: "QColor"; isReadonly: true }
123 Property { name: "lightAubergine"; type: "QColor"; isReadonly: true }
124 Property { name: "midAubergine"; type: "QColor"; isReadonly: true }
125 Property { name: "darkAubergine"; type: "QColor"; isReadonly: true }
126 Property { name: "warmGrey"; type: "QColor"; isReadonly: true }
127 Property { name: "coolGrey"; type: "QColor"; isReadonly: true }
128 Property { name: "orangeGradient"; type: "QQuickGradient"; isPointer: true }
129 Property { name: "greyGradient"; type: "QQuickGradient"; isPointer: true }
130 Property { name: "lightGrey"; type: "QColor"; isReadonly: true }
131 Property { name: "darkGrey"; type: "QColor"; isReadonly: true }
132 Property { name: "red"; type: "QColor"; isReadonly: true }
133 Property { name: "green"; type: "QColor"; isReadonly: true }
134 Property { name: "blue"; type: "QColor"; isReadonly: true }
135 Property { name: "purple"; type: "QColor"; isReadonly: true }
136 }
73}137}
74138
=== modified file 'plugins/Ubuntu/Settings/Components/serverpropertysynchroniser.cpp'
--- plugins/Ubuntu/Settings/Components/serverpropertysynchroniser.cpp 2015-05-06 16:31:57 +0000
+++ plugins/Ubuntu/Settings/Components/serverpropertysynchroniser.cpp 2016-03-24 12:20:44 +0000
@@ -18,7 +18,6 @@
1818
19#include <QQmlProperty>19#include <QQmlProperty>
20#include <QTimer>20#include <QTimer>
21#include <QDebug>
2221
23ServerPropertySynchroniser::ServerPropertySynchroniser(QObject* parent)22ServerPropertySynchroniser::ServerPropertySynchroniser(QObject* parent)
24 : QObject(parent)23 : QObject(parent)
2524
=== modified file 'plugins/Ubuntu/Settings/Menus/CMakeLists.txt'
--- plugins/Ubuntu/Settings/Menus/CMakeLists.txt 2014-07-31 13:05:44 +0000
+++ plugins/Ubuntu/Settings/Menus/CMakeLists.txt 2016-03-24 12:20:44 +0000
@@ -1,29 +1,21 @@
1project(UbuntuSettingsMenusQml)1project(UbuntuSettingsMenusQml)
22
3find_package(Qt5Core REQUIRED)3add_definitions(-DUBUNTUSETTINGSCOMPONENTS_LIBRARY)
44
5include_directories(5add_library(UbuntuSettingsMenusQml MODULE
6 ${CMAKE_CURRENT_SOURCE_DIR}
7 ${CMAKE_CURRENT_BINARY_DIR}
8)
9
10set(UbuntuSettingsMenusQml_SOURCES
11 plugin.cpp6 plugin.cpp
12 types.h7 types.h
13)
14add_definitions(-DUBUNTUSETTINGSCOMPONENTS_LIBRARY)
15
16add_library(UbuntuSettingsMenusQml MODULE
17 ${UbuntuSettingsMenusQml_SOURCES}8 ${UbuntuSettingsMenusQml_SOURCES}
18)9)
1910
20target_link_libraries(UbuntuSettingsMenusQml11target_link_libraries(UbuntuSettingsMenusQml
12 Qt5::Core
13 Qt5::Qml
14 Qt5::Quick
21 ${GLIB_LIBRARIES}15 ${GLIB_LIBRARIES}
22 ${GIO_LIBRARIES}16 ${GIO_LIBRARIES}
23 ${QMENUMODEL_LDFLAGS}17 ${QMENUMODEL_LDFLAGS}
24 ${LIBUPSTART_LIBRARIES}18 ${LIBUPSTART_LIBRARIES}
25)19)
2620
27qt5_use_modules(UbuntuSettingsMenusQml Core Qml Quick)
28
29add_usc_plugin(Ubuntu.Settings.Menus 0.1 Ubuntu/Settings/Menus TARGETS UbuntuSettingsMenusQml)21add_usc_plugin(Ubuntu.Settings.Menus 0.1 Ubuntu/Settings/Menus TARGETS UbuntuSettingsMenusQml)
3022
=== modified file 'plugins/Ubuntu/Settings/Menus/Menus.qmltypes'
--- plugins/Ubuntu/Settings/Menus/Menus.qmltypes 2015-04-07 09:42:19 +0000
+++ plugins/Ubuntu/Settings/Menus/Menus.qmltypes 2016-03-24 12:20:44 +0000
@@ -1,4 +1,4 @@
1import QtQuick.tooling 1.11import QtQuick.tooling 1.2
22
3// This file describes the plugin-supplied types contained in the library.3// This file describes the plugin-supplied types contained in the library.
4// It is used for QML tooling purposes only.4// It is used for QML tooling purposes only.
@@ -7,6 +7,23 @@
7// 'qmlplugindump -notrelocatable Ubuntu.Settings.Menus 0.1 plugins'7// 'qmlplugindump -notrelocatable Ubuntu.Settings.Menus 0.1 plugins'
88
9Module {9Module {
10 dependencies: [
11 "QtFeedback 5.0",
12 "QtGraphicalEffects 1.0",
13 "QtQml 2.0",
14 "QtQuick 2.4",
15 "QtQuick.Layouts 1.1",
16 "QtQuick.Window 2.2",
17 "Ubuntu.Components 1.3",
18 "Ubuntu.Components.ListItems 1.3",
19 "Ubuntu.Components.Popups 1.3",
20 "Ubuntu.Components.Styles 1.3",
21 "Ubuntu.Components.Themes 1.3",
22 "Ubuntu.Components.Themes.Ambiance 1.3",
23 "Ubuntu.PerformanceMetrics 1.0",
24 "Ubuntu.Settings.Components 0.1",
25 "com.canonical.Oxide 1.9"
26 ]
10 Component {27 Component {
11 name: "TransferState"28 name: "TransferState"
12 prototype: "QObject"29 prototype: "QObject"
@@ -27,4 +44,52 @@
27 }44 }
28 }45 }
29 }46 }
47 Component {
48 prototype: "Palette_QMLTYPE_2"
49 name: "Palette"
50 exports: ["Palette -1.-1"]
51 exportMetaObjectRevisions: [-1]
52 isComposite: true
53 }
54 Component {
55 prototype: "QObject"
56 name: "PaletteValues"
57 exports: ["PaletteValues -1.-1"]
58 exportMetaObjectRevisions: [-1]
59 isComposite: true
60 Property { name: "background"; type: "QColor" }
61 Property { name: "backgroundText"; type: "QColor" }
62 Property { name: "base"; type: "QColor" }
63 Property { name: "baseText"; type: "QColor" }
64 Property { name: "foreground"; type: "QColor" }
65 Property { name: "foregroundText"; type: "QColor" }
66 Property { name: "overlay"; type: "QColor" }
67 Property { name: "overlayText"; type: "QColor" }
68 Property { name: "field"; type: "QColor" }
69 Property { name: "fieldText"; type: "QColor" }
70 Property { name: "selection"; type: "QColor" }
71 }
72 Component {
73 prototype: "QObject"
74 name: "UbuntuColors"
75 exports: ["UbuntuColors -1.-1"]
76 exportMetaObjectRevisions: [-1]
77 isComposite: true
78 isCreatable: false
79 isSingleton: true
80 Property { name: "orange"; type: "QColor"; isReadonly: true }
81 Property { name: "lightAubergine"; type: "QColor"; isReadonly: true }
82 Property { name: "midAubergine"; type: "QColor"; isReadonly: true }
83 Property { name: "darkAubergine"; type: "QColor"; isReadonly: true }
84 Property { name: "warmGrey"; type: "QColor"; isReadonly: true }
85 Property { name: "coolGrey"; type: "QColor"; isReadonly: true }
86 Property { name: "orangeGradient"; type: "QQuickGradient"; isPointer: true }
87 Property { name: "greyGradient"; type: "QQuickGradient"; isPointer: true }
88 Property { name: "lightGrey"; type: "QColor"; isReadonly: true }
89 Property { name: "darkGrey"; type: "QColor"; isReadonly: true }
90 Property { name: "red"; type: "QColor"; isReadonly: true }
91 Property { name: "green"; type: "QColor"; isReadonly: true }
92 Property { name: "blue"; type: "QColor"; isReadonly: true }
93 Property { name: "purple"; type: "QColor"; isReadonly: true }
94 }
30}95}
3196
=== modified file 'runtests.sh'
--- runtests.sh 2014-08-04 14:27:30 +0000
+++ runtests.sh 2016-03-24 12:20:44 +0000
@@ -53,7 +53,7 @@
5353
54cd -54cd -
5555
56make -k qmltests56make -k alltests
5757
58cd -58cd -
5959
6060
=== modified file 'tests/CMakeLists.txt'
--- tests/CMakeLists.txt 2016-02-29 18:14:22 +0000
+++ tests/CMakeLists.txt 2016-03-24 12:20:44 +0000
@@ -1,10 +1,27 @@
1include(QmlTest)
2
3# QML tests that require graphical capabilities.
4add_custom_target(uitests)
5add_custom_target(xvfbuitests)
6
7add_custom_target(alltests)
8add_dependencies(alltests uitests)
9
10add_custom_target(xvfballtests)
11add_dependencies(xvfballtests xvfbuitests)
12
1add_subdirectory(utils)13add_subdirectory(utils)
214
3# QML tests that require graphical capabitlies.15# add a graphical qml test
4add_custom_target(qmluitests)16# see QmlTest.cmake for additional options
5add_dependencies(qmluitests UbuntuTest)17function(add_usc_qmltest PATH COMPONENT_NAME)
618 add_qml_test(${PATH} ${COMPONENT_NAME}
7add_custom_target(qmltests)19 DEPENDS UbuntuTest
8add_dependencies(qmltests qmluitests)20 IMPORT_PATHS ${CMAKE_BINARY_DIR}/tests/utils/modules
921 TARGETS uitests
22 ${ARGN}
23 )
24endfunction()
25
26add_subdirectory(imports)
10add_subdirectory(qmltests)27add_subdirectory(qmltests)
1128
=== added directory 'tests/imports'
=== added file 'tests/imports/CMakeLists.txt'
--- tests/imports/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ tests/imports/CMakeLists.txt 2016-03-24 12:20:44 +0000
@@ -0,0 +1,5 @@
1
2#
3# Test that all imports for QtQuick and Ubuntu.Components use the wanted version
4#
5add_test(imports ${CMAKE_CURRENT_SOURCE_DIR}/check_imports.py ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR})
06
=== added file 'tests/imports/check_imports.py'
--- tests/imports/check_imports.py 1970-01-01 00:00:00 +0000
+++ tests/imports/check_imports.py 2016-03-24 12:20:44 +0000
@@ -0,0 +1,125 @@
1#! /usr/bin/env python3
2
3#
4# Copyright (C) 2015 Canonical Ltd
5#
6# This program is free software: you can redistribute it and/or modify
7# it under the terms of the GNU General Public License version 3 as
8# published by the Free Software Foundation.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17#
18
19#
20# Little helper program to test that all source files import
21# versions we want
22#
23# Usage: check_imports.py directory [ignore_prefix]
24#
25# The directory specifies the (recursive) location of the source files. Any
26# files with a path that starts with ignore_prefix are not checked. This is
27# useful to exclude files that are generated into the build directory.
28#
29# See the file_pat definition below for a list of files that are checked.
30#
31
32from __future__ import print_function
33
34import argparse
35import os
36import re
37import sys
38
39
40# Print msg on stderr, preceded by program name and followed by newline
41def error(msg):
42 print(os.path.basename(sys.argv[0]) + ": " + msg, file=sys.stderr)
43
44
45# Function to raise errors encountered by os.walk
46def raise_error(e):
47 raise e
48
49# Qt Quick patterns
50# If you increase this make sure you increase
51# the Qt version in debian/control and in CMakeLists.txt
52quick_pat = re.compile(r'.*import QtQuick.*$')
53quick_good_pat = re.compile(r'.*import QtQuick 2\.4.*$')
54quick_layouts_good_pat = re.compile(r'.*import QtQuick.Layouts 1\.1.*$')
55quick_window_good_pat = re.compile(r'.*import QtQuick.Window 2\.2.*$')
56
57# Ubuntu Components patterns
58ubuntu_components_pat = re.compile(r'.*import Ubuntu.Components.*')
59ubuntu_good_components_pat = re.compile(r'.*import Ubuntu.Components.*1\.3.*')
60
61def scan_for_bad_import(file_path, all_pat, good_pats):
62 errors = []
63 with open(file_path, 'rt', encoding='utf-8') as ifile:
64 for lino, line in enumerate(ifile, start=1):
65 if all_pat.match(line):
66 good_found = False
67 for good_pat in good_pats:
68 if good_pat.match(line):
69 good_found = True
70 if not good_found:
71 errors.append(lino)
72 if 0 < len(errors) <= 10:
73 if len(errors) > 1:
74 plural = 's'
75 else:
76 plural = ''
77 print(
78 "%s: bad import version in line%s %s" % (
79 file_path, plural, ", ".join((str(i) for i in errors))))
80 elif errors:
81 print("%s: bad import version in multiple lines" % file_path)
82 return bool(errors)
83
84# Parse args
85
86parser = argparse.ArgumentParser(
87 description='Test that source files contain the wanted import version.')
88parser.add_argument(
89 'dir', nargs=1,
90 help='The directory to (recursively) search for source files')
91parser.add_argument(
92 'ignore_prefix', nargs='?', default=None,
93 help='Ignore source files with a path that starts with the given prefix.')
94args = parser.parse_args()
95
96# Files we want to check for import version.
97
98file_pat = (
99 r'(.*\.(js|qml)$)')
100pat = re.compile(file_pat)
101
102# Find all the files with matching file extension in the specified
103# directory and check them
104
105directory = os.path.abspath(args.dir[0])
106ignore = args.ignore_prefix and os.path.abspath(args.ignore_prefix) or None
107
108found_bad_import = False
109try:
110 for root, dirs, files in os.walk(directory, onerror=raise_error):
111 for file in files:
112 path = os.path.join(root, file)
113 if not (ignore and path.startswith(ignore)) and pat.match(file):
114 quick_good_pats = [quick_good_pat, quick_layouts_good_pat, quick_window_good_pat]
115 if scan_for_bad_import(path, quick_pat, quick_good_pats):
116 found_bad_import = True
117 if scan_for_bad_import(path, ubuntu_components_pat, [ubuntu_good_components_pat]):
118 found_bad_import = True
119
120except OSError as e:
121 error("cannot create file list for \"" + dir + "\": " + e.strerror)
122 sys.exit(1)
123
124if found_bad_import:
125 sys.exit(1)
0126
=== modified file 'tests/qmltests/CMakeLists.txt'
--- tests/qmltests/CMakeLists.txt 2016-03-09 14:04:14 +0000
+++ tests/qmltests/CMakeLists.txt 2016-03-24 12:20:44 +0000
@@ -1,42 +1,30 @@
1# add_qml_test macro1add_usc_qmltest(Components Calendar)
2include(QmlTest)2add_usc_qmltest(Components ServerPropertySynchroniser)
33add_usc_qmltest(Components StatusIcon)
4set(qmltest_DEFAULT_TARGETS qmluitests)4
5set(qmltest_DEFAULT_NO_ADD_TEST TRUE)5add_usc_qmltest(Menus AccessPointMenu)
6set(qmltest_DEFAULT_PROPERTIES ENVIRONMENT "LC_ALL=C")6add_usc_qmltest(Menus ButtonMenu)
77add_usc_qmltest(Menus CalendarMenu)
8set(qmltest_DEFAULT_IMPORT_PATHS8add_usc_qmltest(Menus CheckableMenu)
9 ${CMAKE_BINARY_DIR}/plugins9add_usc_qmltest(Menus EventMenu)
10 ${CMAKE_BINARY_DIR}/tests/utils/modules10add_usc_qmltest(Menus GroupedMessageMenu)
11)11add_usc_qmltest(Menus MediaPlayerMenu)
1212add_usc_qmltest(Menus PlaybackItemMenu)
13add_qml_test(Components Calendar)13add_usc_qmltest(Menus ProgressBarMenu)
14add_qml_test(Components ServerPropertySynchroniser)14add_usc_qmltest(Menus ProgressValueMenu)
15add_qml_test(Components StatusIcon)15add_usc_qmltest(Menus SectionMenu)
1616add_usc_qmltest(Menus SimpleMessageMenu)
17add_qml_test(Menus AccessPointMenu)17add_usc_qmltest(Menus SliderMenu)
18add_qml_test(Menus ButtonMenu)18add_usc_qmltest(Menus SnapDecisionMenu)
19add_qml_test(Menus CalendarMenu)19add_usc_qmltest(Menus SwitchMenu)
20add_qml_test(Menus CheckableMenu)20add_usc_qmltest(Menus UserSessionMenu)
21add_qml_test(Menus EventMenu)21add_usc_qmltest(Menus TextMessageMenu)
22add_qml_test(Menus GroupedMessageMenu)22add_usc_qmltest(Menus TimeZoneMenu)
23add_qml_test(Menus MediaPlayerMenu)23add_usc_qmltest(Menus TransferMenu)
24add_qml_test(Menus PlaybackItemMenu)24
25add_qml_test(Menus ProgressBarMenu)25add_usc_qmltest(Vpn VpnList)
26add_qml_test(Menus ProgressValueMenu)26add_usc_qmltest(Vpn VpnEditor)
27add_qml_test(Menus SectionMenu)27add_usc_qmltest(Vpn VpnOpenvpnEditor)
28add_qml_test(Menus SimpleMessageMenu)28add_usc_qmltest(Vpn VpnPptpEditor)
29add_qml_test(Menus SliderMenu)29add_usc_qmltest(Vpn VpnPreviewDialogCertificateChecks)
30add_qml_test(Menus SnapDecisionMenu)30add_usc_qmltest(Vpn VpnPreviewDialog ENVIRONMENT NO_SSL_CERTIFICATE_CHECK=1)
31add_qml_test(Menus SwitchMenu)
32add_qml_test(Menus UserSessionMenu)
33add_qml_test(Menus TextMessageMenu)
34add_qml_test(Menus TimeZoneMenu)
35add_qml_test(Menus TransferMenu)
36
37add_qml_test(Vpn VpnList)
38add_qml_test(Vpn VpnEditor)
39add_qml_test(Vpn VpnOpenvpnEditor)
40add_qml_test(Vpn VpnPptpEditor)
41add_qml_test(Vpn VpnPreviewDialogCertificateChecks)
42add_qml_test(Vpn VpnPreviewDialog ENVIRONMENT NO_SSL_CERTIFICATE_CHECK=1)
4331
=== modified file 'tests/utils/modules/CMakeLists.txt'
--- tests/utils/modules/CMakeLists.txt 2013-10-04 10:10:47 +0000
+++ tests/utils/modules/CMakeLists.txt 2016-03-24 12:20:44 +0000
@@ -1,1 +1,3 @@
1include(QmlPlugins)
2
1add_subdirectory(Ubuntu)3add_subdirectory(Ubuntu)
24
=== modified file 'tests/utils/modules/Ubuntu/Test/CMakeLists.txt'
--- tests/utils/modules/Ubuntu/Test/CMakeLists.txt 2013-10-04 10:52:27 +0000
+++ tests/utils/modules/Ubuntu/Test/CMakeLists.txt 2016-03-24 12:20:44 +0000
@@ -1,27 +1,21 @@
1add_definitions(-DQT_NO_KEYWORDS)1include_directories(
2 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
3)
24
3set(UbuntuTestQML_SOURCES5add_library(UbuntuTestQml MODULE
4 testutil.cpp6 testutil.cpp
5 plugin.cpp7 plugin.cpp
6 TouchEventSequenceWrapper.cpp8 TouchEventSequenceWrapper.cpp
7)9)
810
9include_directories(11target_link_libraries(UbuntuTestQml
10 ${CMAKE_CURRENT_SOURCE_DIR}12 Qt5::Core
11 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}13 Qt5::Quick
12 )14 Qt5::Test
13
14add_library(UbuntuTestQml MODULE ${UbuntuTestQML_SOURCES})
15
16qt5_use_modules(UbuntuTestQml Core Quick Test)
17
18# copy qml files into build directory for shadow builds
19file(GLOB QML_JS_FILES *.js *.qml qmldir)
20
21add_custom_target(UbuntuTestQmlJsFiles ALL
22 COMMAND cp ${QML_JS_FILES} ${CMAKE_CURRENT_BINARY_DIR}
23 DEPENDS ${QML_JS_FILES}
24)15)
2516
17export_qmlfiles(Ubuntu.Test Ubuntu/Test NO_INSTALL)
18export_qmlplugin(Ubuntu.Test 0.1 Ubuntu/Test TARGETS UbuntuTestQml NO_INSTALL)
19
26add_custom_target(UbuntuTest)20add_custom_target(UbuntuTest)
27add_dependencies(UbuntuTest UbuntuTestQml UbuntuTestQmlJsFiles)21add_dependencies(UbuntuTest UbuntuTestQml Ubuntu.Test-qmlfiles)
2822
=== added file 'tests/utils/modules/Ubuntu/Test/Test.qmltypes'
--- tests/utils/modules/Ubuntu/Test/Test.qmltypes 1970-01-01 00:00:00 +0000
+++ tests/utils/modules/Ubuntu/Test/Test.qmltypes 2016-03-24 12:20:44 +0000
@@ -0,0 +1,124 @@
1import QtQuick.tooling 1.2
2
3// This file describes the plugin-supplied types contained in the library.
4// It is used for QML tooling purposes only.
5//
6// This file was auto-generated by:
7// 'qmlplugindump -notrelocatable Ubuntu.Test 0.1 tests/utils/modules'
8
9Module {
10 dependencies: [
11 "QtFeedback 5.0",
12 "QtGraphicalEffects 1.0",
13 "QtQml 2.0",
14 "QtQuick 2.4",
15 "QtQuick.Layouts 1.1",
16 "QtQuick.Window 2.2",
17 "QtTest 1.1",
18 "Ubuntu.Components 1.3",
19 "Ubuntu.Components.ListItems 1.3",
20 "Ubuntu.Components.Popups 1.3",
21 "Ubuntu.Components.Styles 1.3",
22 "Ubuntu.Components.Themes 1.3",
23 "Ubuntu.Components.Themes.Ambiance 1.3",
24 "Ubuntu.PerformanceMetrics 1.0",
25 "com.canonical.Oxide 1.9"
26 ]
27 Component {
28 name: "TestUtil"
29 prototype: "QObject"
30 exports: ["Ubuntu.Test/Util 0.1"]
31 isCreatable: false
32 isSingleton: true
33 exportMetaObjectRevisions: [0]
34 Method {
35 name: "isInstanceOf"
36 type: "bool"
37 Parameter { type: "QObject"; isPointer: true }
38 Parameter { type: "string" }
39 }
40 Method { name: "touchEvent"; type: "TouchEventSequenceWrapper*" }
41 }
42 Component {
43 name: "TouchEventSequenceWrapper"
44 prototype: "QObject"
45 exports: ["Ubuntu.Test/TouchEventSequence 0.1"]
46 isCreatable: false
47 exportMetaObjectRevisions: [0]
48 Method {
49 name: "commit"
50 Parameter { name: "processEvents"; type: "bool" }
51 }
52 Method { name: "commit" }
53 Method {
54 name: "move"
55 Parameter { name: "touchId"; type: "int" }
56 Parameter { name: "x"; type: "int" }
57 Parameter { name: "y"; type: "int" }
58 }
59 Method {
60 name: "press"
61 Parameter { name: "touchId"; type: "int" }
62 Parameter { name: "x"; type: "int" }
63 Parameter { name: "y"; type: "int" }
64 }
65 Method {
66 name: "release"
67 Parameter { name: "touchId"; type: "int" }
68 Parameter { name: "x"; type: "int" }
69 Parameter { name: "y"; type: "int" }
70 }
71 Method {
72 name: "stationary"
73 Parameter { name: "touchId"; type: "int" }
74 }
75 }
76 Component {
77 prototype: "Palette_QMLTYPE_2"
78 name: "Palette"
79 exports: ["Palette -1.-1"]
80 exportMetaObjectRevisions: [-1]
81 isComposite: true
82 }
83 Component {
84 prototype: "QObject"
85 name: "PaletteValues"
86 exports: ["PaletteValues -1.-1"]
87 exportMetaObjectRevisions: [-1]
88 isComposite: true
89 Property { name: "background"; type: "QColor" }
90 Property { name: "backgroundText"; type: "QColor" }
91 Property { name: "base"; type: "QColor" }
92 Property { name: "baseText"; type: "QColor" }
93 Property { name: "foreground"; type: "QColor" }
94 Property { name: "foregroundText"; type: "QColor" }
95 Property { name: "overlay"; type: "QColor" }
96 Property { name: "overlayText"; type: "QColor" }
97 Property { name: "field"; type: "QColor" }
98 Property { name: "fieldText"; type: "QColor" }
99 Property { name: "selection"; type: "QColor" }
100 }
101 Component {
102 prototype: "QObject"
103 name: "UbuntuColors"
104 exports: ["UbuntuColors -1.-1"]
105 exportMetaObjectRevisions: [-1]
106 isComposite: true
107 isCreatable: false
108 isSingleton: true
109 Property { name: "orange"; type: "QColor"; isReadonly: true }
110 Property { name: "lightAubergine"; type: "QColor"; isReadonly: true }
111 Property { name: "midAubergine"; type: "QColor"; isReadonly: true }
112 Property { name: "darkAubergine"; type: "QColor"; isReadonly: true }
113 Property { name: "warmGrey"; type: "QColor"; isReadonly: true }
114 Property { name: "coolGrey"; type: "QColor"; isReadonly: true }
115 Property { name: "orangeGradient"; type: "QQuickGradient"; isPointer: true }
116 Property { name: "greyGradient"; type: "QQuickGradient"; isPointer: true }
117 Property { name: "lightGrey"; type: "QColor"; isReadonly: true }
118 Property { name: "darkGrey"; type: "QColor"; isReadonly: true }
119 Property { name: "red"; type: "QColor"; isReadonly: true }
120 Property { name: "green"; type: "QColor"; isReadonly: true }
121 Property { name: "blue"; type: "QColor"; isReadonly: true }
122 Property { name: "purple"; type: "QColor"; isReadonly: true }
123 }
124}

Subscribers

People subscribed via source and target branches

to all changes: