Merge lp:~nskaggs/ubuntu-terminal-app/polling-test-idea into lp:ubuntu-terminal-app

Proposed by Nicholas Skaggs
Status: Merged
Approved by: Nicholas Skaggs
Approved revision: 29
Merged at revision: 21
Proposed branch: lp:~nskaggs/ubuntu-terminal-app/polling-test-idea
Merge into: lp:ubuntu-terminal-app
Diff against target: 260 lines (+82/-77)
2 files modified
tests/autopilot/ubuntu_terminal_app/emulators.py (+19/-3)
tests/autopilot/ubuntu_terminal_app/tests/test_terminal.py (+63/-74)
To merge this branch: bzr merge lp:~nskaggs/ubuntu-terminal-app/polling-test-idea
Reviewer Review Type Date Requested Status
Ubuntu Phone Apps Jenkins Bot continuous-integration Approve
Ubuntu Terminal Developers Pending
Review via email: mp+180020@code.launchpad.net

Commit message

Change to polling instead of using assert, fix lambda silliness, and enable all tests

Description of the change

Change to polling instead of using assert, fix lambda silliness, and enable all tests

To post a comment you must log in.
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'tests/autopilot/ubuntu_terminal_app/emulators.py'
2--- tests/autopilot/ubuntu_terminal_app/emulators.py 2013-08-09 19:46:40 +0000
3+++ tests/autopilot/ubuntu_terminal_app/emulators.py 2013-08-13 23:40:45 +0000
4@@ -23,30 +23,45 @@
5 class MainView(toolkit_emulators.MainView):
6 """Terminal MainView Autopilot emulator."""
7
8+ def _poll_for_object(self, function, timeout = 10):
9+ """Wait until the function returns an object, or timesout"""
10+ poll = 0
11+ while function == None and poll < timeout:
12+ poll += 1
13+ sleep(1)
14+
15 def get_header_item(self):
16 """Get the header"""
17+ self._poll_for_object(lambda: self.select_single("Header"))
18 return self.select_single("Header")
19
20 def get_slider_item(self, slider):
21- """Get the header"""
22- return self.select_single("Slider", objectName=slider)
23+ self._poll_for_object(lambda: self.select_single("Slider", objectName=slider))
24+ return self.select_single("Slider", objectName=slider)
25
26 def get_kterm(self):
27+ self._poll_for_object(lambda: self.select_single("KTerminalDisplay", objectName="kterm"))
28 return self.select_single("KTerminalDisplay", objectName="kterm")
29+
30 def get_control_panel(self):
31+ self._poll_for_object(lambda: self.select_single("CtrlKeys", objectName="kbCtrl"))
32 return self.select_single("CtrlKeys", objectName="kbCtrl")
33
34 def get_function_panel(self):
35+ self._poll_for_object(lambda: self.select_single("FnKeys", objectName="kbFn"))
36 return self.select_single("FnKeys", objectName="kbFn")
37
38 def get_scroll_panel(self):
39+ self._poll_for_object(lambda: self.select_single("ScrlKeys", objectName="kbScrl"))
40 return self.select_single("ScrlKeys", objectName="kbScrl")
41
42 def get_terminal_page(self):
43+ self._poll_for_object(lambda: self.select_single("Terminal", objectName="pgTerm"))
44 return self.select_single("Terminal", objectName="pgTerm")
45
46 def get_circle_menu(self):
47- return self.select_single("CircleMenu", objectName="cmenu")
48+ self._poll_for_object(lambda: self.select_single("CircleMenu", objectName="cmenu"))
49+ return self.select_single("CircleMenu", objectName="cmenu")
50
51 def expand_width(self, val):
52 """Expand width of the main QML view"""
53@@ -66,6 +81,7 @@
54
55 def get_panel_actions_popover(self):
56 """Return the ActionSelectionPopover emulator of the popup action."""
57+ self._poll_for_object(lambda: self.select_single(ActionSelectionPopover, objectName='panelpopover'))
58 return self.select_single(ActionSelectionPopover, objectName='panelpopover')
59
60 def drag_horizontal_slider(self, slider, pos):
61
62=== modified file 'tests/autopilot/ubuntu_terminal_app/tests/test_terminal.py'
63--- tests/autopilot/ubuntu_terminal_app/tests/test_terminal.py 2013-08-09 22:26:21 +0000
64+++ tests/autopilot/ubuntu_terminal_app/tests/test_terminal.py 2013-08-13 23:40:45 +0000
65@@ -10,7 +10,7 @@
66 from __future__ import absolute_import
67
68 from autopilot.matchers import Eventually
69-from testtools.matchers import Equals, NotEquals,GreaterThan
70+from testtools.matchers import Equals, NotEquals, GreaterThan, Not, Is
71 from autopilot.platform import model
72
73 from ubuntu_terminal_app.tests import TerminalTestCase, DbMan
74@@ -43,29 +43,30 @@
75 timeout+=1
76 panel_popover.click_button("Hide extra panel")
77
78- #def click_value_selector_item(self, selector, value):
79- #"""Clicks value from value selector"""
80- ## The value selector is assumed to be the following format
81- ## ListItem.ValueSelector {
82- ## objectName:
83- ## values:
84- #val_selector = self.main_view.select_single("ValueSelector", objectName=selector)
85- #self.assertThat(lambda: val_selector, Eventually(NotEquals(None)))
86- #self.pointing_device.click_object(val_selector)
87- #rows = val_selector.select_single("QQuickColumn")
88- #rects = rows.select_many("QQuickRectangle")
89- #for ritem in rects:
90- #labelList = ritem.select_many("LabelVisual")
91- #for label in labelList:
92- #if label.text == value:
93- #self.pointing_device.click_object(label)
94- ##check to make sure update is complete
95- #self.assertThat(lambda: val_selector.select_single("QQuickRepeater").state, Eventually(Equals("closed")))
96- ##check label match
97- #valBase = val_selector.select_single("Base")
98- ##the first label is always the "color scheme"
99- #valLabel = valBase.select_many("LabelVisual")[1]
100- #self.assertThat(lambda: valLabel.text, Eventually(Equals(value)))
101+ def click_value_selector_item(self, selector, value):
102+ """Clicks value from value selector"""
103+ # The value selector is assumed to be the following format
104+ # ListItem.ValueSelector {
105+ # objectName:
106+ # values:
107+ val_selector = lambda: self.main_view.select_single("ValueSelector", objectName=selector)
108+ self.assertThat(val_selector, Eventually(Not(Is(None))))
109+ self.pointing_device.click_object(val_selector)
110+ rows = val_selector.select_single("QQuickColumn")
111+ rects = rows.select_many("QQuickRectangle")
112+ for ritem in rects:
113+ labelList = ritem.select_many("LabelVisual")
114+ for label in labelList:
115+ if label.text == value:
116+ self.pointing_device.click_object(label)
117+ #check to make sure update is complete
118+ valState = lambda: val_selector.select_single("QQuickRepeater").state
119+ self.assertThat(valState, Eventually(Equals("closed")))
120+ #check label match
121+ valBase = val_selector.select_single("Base")
122+ #the first label is always the "color scheme"
123+ valLabel = lambda: valBase.select_many("LabelVisual")[1].text
124+ self.assertThat(valLabel, Eventually(Equals(value)))
125
126 def test_control_panel(self):
127 """Make sure that Control Keys Panel is visible
128@@ -74,16 +75,12 @@
129 toolbar.click_button("PanelsButton")
130
131 panel_popover = self.main_view.get_panel_actions_popover()
132- self.assertThat(lambda: panel_popover, Eventually(NotEquals(None)))
133 panel_popover.click_button("Control keys")
134
135- panelCtrl = self.main_view.get_control_panel()
136- self.assertThat(lambda: panelCtrl.visible, Eventually(Equals(True)))
137-
138+ panelCtrl = lambda: self.main_view.get_control_panel().visible
139+ self.assertThat(panelCtrl, Eventually(Equals(True)))
140 self.hide_panels()
141-
142- panelCtrl = self.main_view.get_control_panel()
143- self.assertThat(lambda: panelCtrl.visible, Eventually(Equals(False)))
144+ self.assertThat(panelCtrl, Eventually(Equals(False)))
145
146 def test_function_panel(self):
147 """Make sure that function Keys Panel is visible
148@@ -92,16 +89,12 @@
149 toolbar.click_button("PanelsButton")
150
151 panel_popover = self.main_view.get_panel_actions_popover()
152- self.assertThat(lambda: panel_popover, Eventually(NotEquals(None)))
153 panel_popover.click_button("Function keys")
154
155- panelFunc = self.main_view.get_function_panel()
156- self.assertThat(lambda: panelFunc.visible, Eventually(Equals(True)))
157-
158+ panelFunc = lambda: self.main_view.get_function_panel().visible
159+ self.assertThat(panelFunc, Eventually(Equals(True)))
160 self.hide_panels()
161-
162- panelFunc = self.main_view.get_function_panel()
163- self.assertThat(lambda: panelFunc.visible, Eventually(Equals(False)))
164+ self.assertThat(panelFunc, Eventually(Equals(False)))
165
166 def test_textctrl_panel(self):
167 """Make sure that Text Control Keys Panel is visible
168@@ -110,60 +103,56 @@
169 toolbar.click_button("PanelsButton")
170
171 panel_popover = self.main_view.get_panel_actions_popover()
172- self.assertThat(lambda: panel_popover, Eventually(NotEquals(None)))
173 panel_popover.click_button("Text ctrl keys")
174
175- panelScrl = self.main_view.get_scroll_panel()
176- self.assertThat(lambda: panelScrl.visible, Eventually(Equals(True)))
177-
178+ panelScrl = lambda: self.main_view.get_scroll_panel().visible
179+ self.assertThat(panelScrl, Eventually(Equals(True)))
180 self.hide_panels()
181-
182- panelScrl = self.main_view.get_scroll_panel()
183- self.assertThat(lambda: panelScrl.visible, Eventually(Equals(False)))
184+ self.assertThat(panelScrl, Eventually(Equals(False)))
185
186 def test_circle_menu_shows(self):
187 """Make sure that Circle Menu is visible
188 on long tap"""
189 kterm = self.main_view.get_terminal_page()
190- menu = self.main_view.get_circle_menu()
191 self.pointing_device.click_object(kterm)
192 self.pointing_device.press()
193 sleep(2)
194 self.pointing_device.release()
195- self.assertThat(menu.visible, Eventually(Equals(True)))
196+ menu = lambda: self.main_view.get_circle_menu().visible
197+ self.assertThat(menu, Eventually(Equals(True)))
198
199 def test_header(self):
200 """Make sure that Header is visible
201 in Portrait Mode and not visible in landscape mode"""
202- header = self.main_view.get_header_item().visible
203+ header = lambda: self.main_view.get_header_item().visible
204 if model() == "Nexus 10" or model() == "Nexus 7":
205- self.assertThat(lambda: header, Eventually(Equals(False)))
206+ self.assertThat(header, Eventually(Equals(False)))
207 else:
208- self.assertThat(lambda: header, Eventually(Equals(True)))
209-
210- #def test_color_scheme_changes(self):
211- #"""Make sure that color scheme is set correctly"""
212- #kterm = self.main_view.get_kterm()
213- #self.main_view.switch_to_tab("SettingsTab")
214-
215- ##are these string translatable?
216- ##if so, we need to do this another way
217- #schemeList = ("DarkPastels",
218- #"Linux",
219- #"BlackOnRandomLight",
220- #"BlackOnWhite",
221- #"BlackOnLightYellow",
222- #"GreenOnBlack",
223- #"WhiteOnBlack",
224- #)
225-
226- #for scheme in schemeList:
227- #self.click_value_selector_item("liSchemes",scheme)
228- ## This assert uses KTerminalDisplay property (old rev)
229- #self.assertThat(kterm.colorScheme, Eventually(Equals(scheme)))
230- ## This assert uses localstorage (new rev)
231- #colorScheme = self.get_color_scheme_from_storage()
232- #self.assertThat(lambda: colorScheme, Eventually(Equals(scheme)))
233+ self.assertThat(header, Eventually(Equals(True)))
234+
235+ def test_color_scheme_changes(self):
236+ """Make sure that color scheme is set correctly"""
237+ kterm = self.main_view.get_kterm()
238+ self.main_view.switch_to_tab("SettingsTab")
239+
240+ #are these string translatable?
241+ #if so, we need to do this another way
242+ schemeList = ("DarkPastels",
243+ "Linux",
244+ "BlackOnRandomLight",
245+ "BlackOnWhite",
246+ "BlackOnLightYellow",
247+ "GreenOnBlack",
248+ "WhiteOnBlack",
249+ )
250+
251+ for scheme in schemeList:
252+ self.click_value_selector_item("liSchemes",scheme)
253+ # This assert uses KTerminalDisplay property (old rev)
254+ self.assertThat(kterm.colorScheme, Eventually(Equals(scheme)))
255+ # This assert uses localstorage (new rev)
256+ colorScheme = self.get_color_scheme_from_storage
257+ self.assertThat(colorScheme, Eventually(Equals(scheme)))
258
259
260 def test_font_size_changes(self):

Subscribers

People subscribed via source and target branches