Merge lp:~kalikiana/ubuntu-ui-toolkit/qmlapicheckverbose into lp:ubuntu-ui-toolkit

Proposed by Cris Dywan
Status: Superseded
Proposed branch: lp:~kalikiana/ubuntu-ui-toolkit/qmlapicheckverbose
Merge into: lp:ubuntu-ui-toolkit
Diff against target: 378 lines (+129/-35)
15 files modified
components.api (+24/-0)
debian/control (+9/-6)
debian/rules (+1/-0)
debian/ubuntu-ui-toolkit-autopilot.install (+2/-1)
run_tests.sh (+2/-2)
tests/autopilot/ubuntuuitoolkit/base.py (+3/-2)
tests/autopilot/ubuntuuitoolkit/emulators.py (+8/-8)
tests/autopilot/ubuntuuitoolkit/fixture_setup.py (+1/-1)
tests/autopilot/ubuntuuitoolkit/tests/test_emulators.py (+4/-1)
tests/autopilot/ubuntuuitoolkit/tests/test_fixture_setup.py (+6/-1)
tests/qmlapicheck.py (+4/-2)
tests/qmlapicheck.sh (+52/-0)
tests/tests.pro (+5/-2)
tests/unit/add_qmlmakecheck.pri (+2/-8)
ubuntu-sdk.pro (+6/-1)
To merge this branch: bzr merge lp:~kalikiana/ubuntu-ui-toolkit/qmlapicheckverbose
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Approve
Zsombor Egri Approve
Review via email: mp+187243@code.launchpad.net

This proposal has been superseded by a proposal from 2014-03-04.

Commit message

Make API tests more visible and include Layouts and UbuntuTestCase

Description of the change

The wrapper is intended to make API test more visible in the output regardless of failure or success.
A semi-related fix increases coverage so that UbuntuTestCase and Layouts are also checked.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Zsombor Egri (zsombi) wrote :

I think we should leave out the Theme folder from the API check yet, as we do not promise API stability for those yet.

review: Needs Fixing
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Zsombor Egri (zsombi) wrote :

Let's leave Theme in the loop but be less strict on those API breaks. Thanks for the fixes.

review: Approve
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
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
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
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
Zsombor Egri (zsombi) wrote :

IconVisual is listed in the API file, which is an internal type of ListItems module. I think internals shouldn't be listed at all.

review: Needs Fixing
Revision history for this message
Cris Dywan (kalikiana) wrote :

That's bug 1256045. This branch only is about the output, no change in behavior.

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: Approve (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Zsombor Egri (zsombi) wrote :

Good stuff. Merge with trunk so we have it up to date and we can land it.

review: Approve
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
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Cris Dywan (kalikiana) wrote :
776. By Cris Dywan

Merge lp:~ubuntu-core-dev/ubuntu-ui-toolkit/py32ap

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'components.api'
2--- components.api 2014-02-24 19:16:26 +0000
3+++ components.api 2014-03-04 12:39:24 +0000
4@@ -582,6 +582,12 @@
5 modules/Ubuntu/PerformanceMetrics/PerformanceOverlay.qml
6 Item
7 property bool active
8+modules/Ubuntu/Test/UbuntuTestCase.qml
9+TestCase
10+ function findChild(obj,objectName)
11+ function findInvisibleChild(obj,objectName)
12+ function mouseMoveSlowly(item,x,y,dx,dy,steps,stepdelay)
13+ function tryCompareFunction(func, expectedResult, timeout)
14 plugins.qmltypes
15 name: "InverseMouseAreaType"
16 prototype: "QQuickMouseArea"
17@@ -766,6 +772,24 @@
18 Parameter { name: "singular"; type: "string" }
19 Parameter { name: "plural"; type: "string" }
20 Parameter { name: "n"; type: "int" }
21+ name: "ULConditionalLayout"
22+ prototype: "QObject"
23+ exports: ["ConditionalLayout 0.1"]
24+ Property { name: "name"; type: "string" }
25+ Property { name: "when"; type: "QQmlBinding"; isPointer: true }
26+ Property { name: "layout"; type: "QQmlComponent"; isPointer: true }
27+ name: "ULItemLayout"
28+ prototype: "QQuickItem"
29+ exports: ["ItemLayout 0.1"]
30+ Property { name: "item"; type: "string" }
31+ name: "ULLayouts"
32+ prototype: "QQuickItem"
33+ exports: ["Layouts 0.1"]
34+ Property { name: "currentLayout"; type: "string"; isReadonly: true }
35+ Property { name: "layouts"; type: "ULConditionalLayout"; isList: true; isReadonly: true }
36+ name: "ULLayoutsAttached"
37+ prototype: "QObject"
38+ Property { name: "item"; type: "string" }
39 name: "UPMCpuUsage"
40 prototype: "QQuickItem"
41 exports: ["CpuUsage 0.1"]
42
43=== modified file 'debian/control'
44--- debian/control 2014-03-01 12:51:13 +0000
45+++ debian/control 2014-03-04 12:39:24 +0000
46@@ -6,6 +6,7 @@
47 devscripts,
48 libgles2-mesa-dev,
49 libglib2.0-dev,
50+ python3,
51 python,
52 libqt5qml-graphicaleffects | libqt5graphicaleffects5,
53 qt5-default,
54@@ -22,12 +23,12 @@
55 qtdeclarative5-qtfeedback-plugin,
56 qtdeclarative5-unity-action-plugin (>= 1.1.0),
57 qtdeclarative5-localstorage-plugin,
58- qtdeclarative5-doc-html,
59- qtwebkit5-doc-html,
60- qtsvg5-doc-html,
61- qtscript5-doc-html,
62- qtmultimedia5-doc-html,
63- unity-action-doc,
64+ qtdeclarative5-doc-html,
65+ qtwebkit5-doc-html,
66+ qtsvg5-doc-html,
67+ qtscript5-doc-html,
68+ qtmultimedia5-doc-html,
69+ unity-action-doc,
70 devscripts,
71 libqt5organizer5,
72 qtpim5-dev,
73@@ -135,6 +136,8 @@
74 python-autopilot (>= 1.4),
75 python-fixtures,
76 python-mock,
77+ python3-fixtures,
78+ python3-autopilot (>= 1.4),
79 ubuntu-ui-toolkit-examples (>= ${source:Version}),
80 Description: Test package for Ubuntu UI Toolkit
81 Autopilot tests for the ubuntu-ui-toolkit package
82
83=== modified file 'debian/rules'
84--- debian/rules 2014-03-01 12:51:13 +0000
85+++ debian/rules 2014-03-04 12:39:24 +0000
86@@ -11,6 +11,7 @@
87 override_dh_auto_test:
88 ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
89 mkdir -p debian/tmp/home/run
90+ chmod +x tests/xvfb.sh
91 tests/xvfb.sh dh_auto_test || exit $?
92 endif
93
94
95=== modified file 'debian/ubuntu-ui-toolkit-autopilot.install'
96--- debian/ubuntu-ui-toolkit-autopilot.install 2013-10-30 11:35:57 +0000
97+++ debian/ubuntu-ui-toolkit-autopilot.install 2014-03-04 12:39:24 +0000
98@@ -1,1 +1,2 @@
99-usr/lib/python2.7/dist-packages/ubuntuuitoolkit
100+usr/lib/python3
101+usr/lib/python2.7
102
103=== modified file 'run_tests.sh'
104--- run_tests.sh 2013-09-26 13:12:49 +0000
105+++ run_tests.sh 2014-03-04 12:39:24 +0000
106@@ -21,9 +21,9 @@
107
108 UBUNTU_UI_TOOLKIT_AUTOPILOT_FROM_SOURCE=1
109 if [ "$1" == "" ]; then
110- autopilot run ubuntuuitoolkit
111+ python3 -m autopilot.run run ubuntuuitoolkit
112 else
113- autopilot run -o ../../$1 -f xml -r -rd ../../ ubuntuuitoolkit
114+ python3 -m autopilot.run run -o ../../$1 -f xml -r -rd ../../ ubuntuuitoolkit
115 fi
116
117 exit 0
118
119=== modified file 'tests/autopilot/ubuntuuitoolkit/base.py'
120--- tests/autopilot/ubuntuuitoolkit/base.py 2013-11-15 05:11:10 +0000
121+++ tests/autopilot/ubuntuuitoolkit/base.py 2014-03-04 12:39:24 +0000
122@@ -31,8 +31,9 @@
123 # configuration on devices and it seems the environment variable
124 # QT_SELECT=qt5 doesn't work for autopilot tests. --Mirv - 2013-10-03
125 arch = subprocess.check_output(
126- ["dpkg-architecture", "-qDEB_HOST_MULTIARCH"]).strip()
127- return '/usr/lib/{}/qt5/bin/qmlscene'.format(arch.decode())
128+ ["dpkg-architecture", "-qDEB_HOST_MULTIARCH"],
129+ universal_newlines=True).strip()
130+ return '/usr/lib/{}/qt5/bin/qmlscene'.format(arch)
131
132
133 class UbuntuUIToolkitAppTestCase(testcase.AutopilotTestCase):
134
135=== modified file 'tests/autopilot/ubuntuuitoolkit/emulators.py'
136--- tests/autopilot/ubuntuuitoolkit/emulators.py 2014-03-01 12:52:42 +0000
137+++ tests/autopilot/ubuntuuitoolkit/emulators.py 2014-03-04 12:39:24 +0000
138@@ -582,7 +582,7 @@
139
140 def _show_more_elements(self, direction):
141 x, y, width, height = self.globalRect
142- start_x = stop_x = x + (width / 2)
143+ start_x = stop_x = x + (width // 2)
144 # Start and stop just a little under the top of the list.
145 top = y + 5
146 bottom = y + height - 5
147@@ -607,7 +607,7 @@
148 def _is_element_clickable(self, objectName):
149 """Return True if the center of the element is visible."""
150 element = self.select_single(objectName=objectName)
151- element_center = element.globalRect.y + element.globalRect.height / 2
152+ element_center = element.globalRect.y + element.globalRect.height // 2
153 return (element_center >= self.globalRect.y and
154 element_center <= self.globalRect.y + self.globalRect.height)
155
156@@ -628,7 +628,7 @@
157 @autopilot_logging.log_action(logger.info)
158 def swipe_to_delete(self, direction='right'):
159 """Swipe the item in a specific direction."""
160- if (self.removable):
161+ if self.removable:
162 self._drag_pointing_device_to_delete(direction)
163 if self.confirmRemoval:
164 self.waitingConfirmationForRemoval.wait_for(True)
165@@ -640,12 +640,12 @@
166
167 def _drag_pointing_device_to_delete(self, direction):
168 x, y, w, h = self.globalRect
169- tx = x + (w / 8)
170- ty = y + (h / 2)
171+ tx = x + (w // 8)
172+ ty = y + (h // 2)
173
174- if (direction == 'right'):
175+ if direction == 'right':
176 self.pointing_device.drag(tx, ty, w, ty)
177- elif (direction == 'left'):
178+ elif direction == 'left':
179 self.pointing_device.drag(w - (w*0.1), ty, x, ty)
180 else:
181 raise ToolkitEmulatorException(
182@@ -663,7 +663,7 @@
183 @autopilot_logging.log_action(logger.info)
184 def confirm_removal(self):
185 """Comfirm item removal if this was already swiped."""
186- if (self.waitingConfirmationForRemoval):
187+ if self.waitingConfirmationForRemoval:
188 deleteButton = self._get_confirm_button()
189 self.pointing_device.click_object(deleteButton)
190 self._wait_until_deleted()
191
192=== modified file 'tests/autopilot/ubuntuuitoolkit/fixture_setup.py'
193--- tests/autopilot/ubuntuuitoolkit/fixture_setup.py 2014-02-12 09:20:43 +0000
194+++ tests/autopilot/ubuntuuitoolkit/fixture_setup.py 2014-03-04 12:39:24 +0000
195@@ -87,7 +87,7 @@
196 qmlscene=base.get_qmlscene_launch_command(),
197 qml_file_path=qml_file_path))
198 desktop_file.write('[Desktop Entry]\n')
199- for key, value in self._desktop_file_dict.iteritems():
200+ for key, value in self._desktop_file_dict.items():
201 desktop_file.write('{key}={value}\n'.format(key=key, value=value))
202 desktop_file.close()
203 return desktop_file.name
204
205=== modified file 'tests/autopilot/ubuntuuitoolkit/tests/test_emulators.py'
206--- tests/autopilot/ubuntuuitoolkit/tests/test_emulators.py 2014-03-01 12:52:15 +0000
207+++ tests/autopilot/ubuntuuitoolkit/tests/test_emulators.py 2014-03-04 12:39:24 +0000
208@@ -14,7 +14,6 @@
209 # You should have received a copy of the GNU Lesser General Public License
210 # along with this program. If not, see <http://www.gnu.org/licenses/>.
211
212-import mock
213 import time
214 import unittest
215
216@@ -22,6 +21,10 @@
217 from autopilot import input, platform
218 from autopilot.introspection import dbus
219 from testtools.matchers import GreaterThan, LessThan
220+try:
221+ from unittest import mock
222+except ImportError:
223+ import mock
224
225 from ubuntuuitoolkit import emulators, tests
226
227
228=== modified file 'tests/autopilot/ubuntuuitoolkit/tests/test_fixture_setup.py'
229--- tests/autopilot/ubuntuuitoolkit/tests/test_fixture_setup.py 2014-02-12 18:41:20 +0000
230+++ tests/autopilot/ubuntuuitoolkit/tests/test_fixture_setup.py 2014-03-04 12:39:24 +0000
231@@ -16,7 +16,12 @@
232
233 import os
234
235-import mock
236+try:
237+ # Python 3.
238+ from unittest import mock
239+except ImportError:
240+ # Python 2 add-on: python-mock.
241+ import mock
242 import testtools
243 from autopilot import testcase as autopilot_testcase
244 from testtools.matchers import Contains, Not, FileExists
245
246=== modified file 'tests/qmlapicheck.py'
247--- tests/qmlapicheck.py 2013-12-11 11:28:29 +0000
248+++ tests/qmlapicheck.py 2014-03-04 12:39:24 +0000
249@@ -1,4 +1,4 @@
250-#!/usr/bin/env python
251+#!/usr/bin/env python3
252 # -*- coding: utf-8 -*-
253 #
254 # Copyright 2013 Canonical Ltd.
255@@ -65,7 +65,9 @@
256 fileinput.nextfile()
257
258 inputfiles.sort()
259-for line in fileinput.input(inputfiles):
260+
261+hook = fileinput.hook_encoded('utf-8')
262+for line in fileinput.input(inputfiles, openhook=hook):
263 # New file
264 if fileinput.isfirstline():
265 in_block = 0
266
267=== added file 'tests/qmlapicheck.sh'
268--- tests/qmlapicheck.sh 1970-01-01 00:00:00 +0000
269+++ tests/qmlapicheck.sh 2014-03-04 12:39:24 +0000
270@@ -0,0 +1,52 @@
271+#!/usr/bin/env sh
272+#
273+# Copyright 2013 Canonical Ltd.
274+#
275+# This program is free software; you can redistribute it and/or modify
276+# it under the terms of the GNU Lesser General Public License as published by
277+# the Free Software Foundation; version 3.
278+#
279+# This program is distributed in the hope that it will be useful,
280+# but WITHOUT ANY WARRANTY; without even the implied warranty of
281+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
282+# GNU Lesser General Public License for more details.
283+#
284+# You should have received a copy of the GNU Lesser General Public License
285+# along with this program. If not, see <http://www.gnu.org/licenses/>.
286+#
287+################################################################################
288+QML="modules/Ubuntu/*/qmldir modules/Ubuntu/Components/Colors/UbuntuColors.qml modules/Ubuntu/Components/*/qmldir modules/Ubuntu/Components/Pickers/PickerPanel.qml"
289+CPP="Ubuntu.Components Ubuntu.Layouts Ubuntu.PerformanceMetrics"
290+
291+echo Dumping QML API of C++ components
292+echo '' > plugins.qmltypes
293+for i in $CPP; do
294+ # Silence spam on stderr due to fonts
295+ # https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1256999
296+ # https://bugreports.qt-project.org/browse/QTBUG-36243
297+ qmlplugindump $i 0.1 modules 2>/dev/null >> plugins.qmltypes
298+done
299+STATUS=$?
300+test $STATUS = 0 || ERRORS=1
301+test $STATUS = 0 || echo Error: qmldump failed
302+
303+echo Running QML API check for $QML
304+# Palette gets included in Qt 5.2 qmlplugindump even though it's qml
305+BUILTINS=QQuick,QQml,U1db::,Palette python3 tests/qmlapicheck.py $QML plugins.qmltypes > components.api.new
306+STATUS=$?
307+test $STATUS = 0 || ERRORS=1
308+test $STATUS = 0 || echo Error: qmlapicheck.py failed
309+
310+echo Verifying the diff between existing and generated API
311+diff -Fqml -u components.api components.api.new
312+STATUS=$?
313+test $STATUS = 0 || ERRORS=1
314+test $STATUS = 0 || echo Error: diff mismatched
315+
316+if [ "x$ERRORS" != "x1" ]; then
317+ echo API is all fine.
318+ exit 0
319+else
320+ echo API test failed with errors. Did you forget to update components.api?
321+ exit 1
322+fi
323
324=== modified file 'tests/tests.pro'
325--- tests/tests.pro 2013-10-30 11:35:57 +0000
326+++ tests/tests.pro 2014-03-04 12:39:24 +0000
327@@ -1,7 +1,10 @@
328 TEMPLATE = subdirs
329 SUBDIRS += unit unit_x11
330
331-autopilot_module.path = /usr/lib/python2.7/dist-packages/ubuntuuitoolkit
332+autopilot_module.path = /usr/lib/python3/dist-packages/ubuntuuitoolkit
333 autopilot_module.files = autopilot/ubuntuuitoolkit/*
334
335-INSTALLS += autopilot_module
336+autopilot2_module.path = /usr/lib/python2.7/dist-packages/ubuntuuitoolkit
337+autopilot2_module.files = autopilot/ubuntuuitoolkit/*
338+
339+INSTALLS += autopilot_module autopilot2_module
340
341=== modified file 'tests/unit/add_qmlmakecheck.pri'
342--- tests/unit/add_qmlmakecheck.pri 2014-02-11 12:42:55 +0000
343+++ tests/unit/add_qmlmakecheck.pri 2014-03-04 12:39:24 +0000
344@@ -8,11 +8,5 @@
345 check.commands += ../../unit/runtest.sh $${TARGET} $${TEST} minimal;
346 }
347 check.commands += cd ../../..;
348-# Silence spam on stderr due to fonts
349-# https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1256999
350-# https://bugreports.qt-project.org/browse/QTBUG-36243
351-check.commands += qmlplugindump Ubuntu.Components 0.1 modules 2>/dev/null > plugins.qmltypes;
352-check.commands += qmlplugindump Ubuntu.PerformanceMetrics 0.1 modules 2>/dev/null >> plugins.qmltypes;
353-# Palette gets included in Qt 5.2 qmlplugindump even though it's qml
354-check.commands += BUILTINS=QQuick,QQml,U1db::,Palette python tests/qmlapicheck.py modules/Ubuntu/Components/qmldir modules/Ubuntu/Components/Colors/UbuntuColors.qml modules/Ubuntu/Components/Pickers/PickerPanel.qml modules/Ubuntu/Components/*/qmldir modules/Ubuntu/PerformanceMetrics/qmldir plugins.qmltypes > components.api.new;
355-check.commands += diff -Fqml -u components.api components.api.new || exit 1; cd tests/unit
356+check.commands += sh tests/qmlapicheck.sh || exit 1;
357+check.commands += cd tests/unit
358
359=== modified file 'ubuntu-sdk.pro'
360--- ubuntu-sdk.pro 2013-12-12 13:01:56 +0000
361+++ ubuntu-sdk.pro 2014-03-04 12:39:24 +0000
362@@ -22,10 +22,15 @@
363 QMAKE_EXTRA_TARGETS += test_api
364
365 test_components.target = test-components
366-test_components.commands = cd tests/autopilot; autopilot run ubuntuuitoolkit
367+test_components.commands = cd tests/autopilot; python3 -m autopilot.run run ubuntuuitoolkit
368 test_components.depends = modules/ubuntu-ui-toolkit.pro
369 QMAKE_EXTRA_TARGETS += test_components
370
371+test_components2.target = test-components2
372+test_components2.commands = cd tests/autopilot; python2 -m autopilot.run run ubuntuuitoolkit
373+test_components2.depends = modules/ubuntu-ui-toolkit.pro
374+QMAKE_EXTRA_TARGETS += test_components2
375+
376 qmluitests.target = qmluitests
377 qmluitests.commands = cd tests/unit_x11; make check
378 qmluitests.depends = modules/ubuntu-ui-toolkit.pro

Subscribers

People subscribed via source and target branches

to status/vote changes: