Merge lp:~didrocks/apport/whoopsie-auto-ui into lp:~apport-hackers/apport/trunk

Proposed by Didier Roche-Tolomelli
Status: Merged
Merged at revision: 3204
Proposed branch: lp:~didrocks/apport/whoopsie-auto-ui
Merge into: lp:~apport-hackers/apport/trunk
Diff against target: 1342 lines (+334/-206)
8 files modified
apport/fileutils.py (+7/-3)
apport/ui.py (+22/-0)
bin/apport-cli (+1/-1)
gtk/apport-gtk (+32/-33)
gtk/apport-gtk.ui (+40/-23)
kde/apport-kde (+1/-1)
test/test_ui.py (+96/-48)
test/test_ui_gtk.py (+135/-97)
To merge this branch: bzr merge lp:~didrocks/apport/whoopsie-auto-ui
Reviewer Review Type Date Requested Status
Sebastien Bacher (community) Approve
Brian Murray Pending
Apport upstream developers Pending
Review via email: mp+348479@code.launchpad.net

Commit message

Remember option so that users can diminish crash interactions

Description of the change

Add and adapt test for a "remember" option, which is reported by the UI,
to tell that we want to store the send/don't send option.
Ensure that Relaunch/Force close/Leave close additional buttons are
changed to a checkbox, and that additional Cancel button is never shown,
as being redundant with don't send if enable reporting is possible.
If enable reporting isn't enabled, leave it to "Continue".
Finally, additional labels to propose Sending the report.

To post a comment you must log in.
lp:~didrocks/apport/whoopsie-auto-ui updated
3207. By Didier Roche-Tolomelli

Send message to whoopsie for auto or never send

Proceed via a dbus call to send information for auto or never send
whoopsie status.
Adapt all tests to take the new (now) required key.

Revision history for this message
Sebastien Bacher (seb128) wrote :

The changes seem to match the UI mockups/screenshot discussed via email and the code part seems fine as well, let's land that in cosmic and get some real world testing

review: Approve
Revision history for this message
Dimitri John Ledkov (xnox) wrote :

Not sure i can review this....

Maybe bdmurray would be a better person?

lp:~didrocks/apport/whoopsie-auto-ui updated
3208. By Didier Roche-Tolomelli

Assume if no whoopsie that crash reporting is enabled

As the old configuration that was never enabled was a whoopsie configuration
file, that was never updated by the whoopsie API, we assume that no
whoopsie installed (not the default) == manual send report is allowed.
If people want to disable crash reporting:
- get whoopsie installed and disable crash reporting in g-c-c
- uninstall apport

Revision history for this message
Sebastien Bacher (seb128) wrote :

the new commits seems to make sense

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'apport/fileutils.py'
2--- apport/fileutils.py 2016-12-10 11:28:27 +0000
3+++ apport/fileutils.py 2018-07-02 08:46:26 +0000
4@@ -25,14 +25,18 @@
5 report_dir = os.environ.get('APPORT_REPORT_DIR', '/var/crash')
6
7 _config_file = '~/.config/apport/settings'
8-_whoopsie_config_file = '/etc/default/whoopsie'
9
10
11 def allowed_to_report():
12 '''Check whether crash reporting is enabled.'''
13
14- return get_config('General', 'report_crashes', default=True,
15- path=_whoopsie_config_file, bool=True)
16+ if not os.access("/usr/bin/whoopsie", os.X_OK):
17+ return True
18+
19+ try:
20+ return subprocess.call(["/bin/systemctl", "-q", "is-enabled", "whoopsie.service"]) == 0
21+ except OSError:
22+ return False
23
24
25 def find_package_desktopfile(package):
26
27=== modified file 'apport/ui.py'
28--- apport/ui.py 2018-05-09 23:28:31 +0000
29+++ apport/ui.py 2018-07-02 08:46:26 +0000
30@@ -305,6 +305,8 @@
31 self.restart()
32 if response['blacklist']:
33 self.report.mark_ignore()
34+ if response['remember']:
35+ self.remember_send_report(response['report'])
36 if not response['report']:
37 return
38
39@@ -916,6 +918,26 @@
40
41 self.ui_run_terminal(cmds[response[0]])
42
43+ def remember_send_report(self, send_report):
44+ '''Put whoopsie in auto or never mode'''
45+ if send_report:
46+ send_report = "true"
47+ else:
48+ send_report = "false"
49+ try:
50+ subprocess.check_output(['/usr/bin/gdbus', 'call', '-y',
51+ '-d', 'com.ubuntu.WhoopsiePreferences',
52+ '-o', '/com/ubuntu/WhoopsiePreferences',
53+ '-m', 'com.ubuntu.WhoopsiePreferences.SetReportCrashes', send_report])
54+ subprocess.check_output(['/usr/bin/gdbus', 'call', '-y',
55+ '-d', 'com.ubuntu.WhoopsiePreferences',
56+ '-o', '/com/ubuntu/WhoopsiePreferences',
57+ '-m', 'com.ubuntu.WhoopsiePreferences.SetAutomaticallyReportCrashes', 'true'])
58+ except (OSError, subprocess.CalledProcessError) as e:
59+ self.ui_error_message(_("Can't remember send report status settings"), '%s\n\n%s' % (
60+ _("Saving crash reporting state failed. Can't set auto or never reporting mode."),
61+ excstr(e)))
62+
63 def check_report_crashdb(self):
64 '''Process reports' CrashDB field, if present'''
65
66
67=== modified file 'bin/apport-cli'
68--- bin/apport-cli 2017-11-08 20:50:21 +0000
69+++ bin/apport-cli 2018-07-02 08:46:26 +0000
70@@ -212,7 +212,7 @@
71 while True:
72 response = dialog.run()
73
74- return_value = {'restart': False, 'blacklist': False,
75+ return_value = {'restart': False, 'blacklist': False, 'remember': False,
76 'report': False, 'examine': False}
77 if response == examine:
78 return_value['examine'] = True
79
80=== modified file 'gtk/apport-gtk'
81--- gtk/apport-gtk 2016-12-18 12:51:13 +0000
82+++ gtk/apport-gtk 2018-07-02 08:46:26 +0000
83@@ -75,6 +75,7 @@
84 self.md = None
85
86 self.desktop_info = None
87+ self.allowed_to_report = True
88
89 #
90 # ui_* implementation of abstract UserInterface classes
91@@ -180,15 +181,11 @@
92 _('Send problem report to the developers?'))
93 self.w('title_label').show()
94 self.w('subtitle_label').hide()
95- self.w('closed_button').hide()
96 self.w('ignore_future_problems').hide()
97 self.w('show_details').clicked()
98 self.w('show_details').hide()
99- self.w('cancel_button').show()
100- self.w('cancel_button').connect('clicked', Gtk.main_quit)
101+ self.w('dont_send_button').show()
102 self.w('continue_button').set_label(_('Send'))
103- self.w('send_error_report').set_active(True)
104- self.w('send_error_report').hide()
105
106 def set_modal_for(self, xid):
107 gdk_window = self.w('dialog_crash_new')
108@@ -207,18 +204,20 @@
109 self.w('show_details').set_label(_('Show Details'))
110 self.tree_model.clear()
111
112- if allowed_to_report:
113- self.w('send_error_report').set_active(True)
114- self.w('send_error_report').show()
115+ self.allowed_to_report = allowed_to_report
116+ if self.allowed_to_report:
117+ self.w('remember_send_report_choice').show()
118+ self.w('send_problem_notice_label').set_label(
119+ '<b>%s</b>' % self.w('send_problem_notice_label').get_label())
120+ self.w('send_problem_notice_label').show()
121+ self.w('dont_send_button').grab_focus()
122 else:
123- self.w('send_error_report').set_active(False)
124- self.w('send_error_report').hide()
125+ self.w('dont_send_button').hide()
126+ self.w('continue_button').set_label(_('Continue'))
127+ self.w('continue_button').grab_focus()
128
129 self.w('examine').set_visible(self.can_examine_locally())
130
131- self.w('continue_button').set_label(_('Continue'))
132-
133- self.w('cancel_button').hide()
134 if modal_for is not None and 'DISPLAY' in os.environ:
135 xid = find_xid_for_pid(modal_for)
136 if xid:
137@@ -227,9 +226,8 @@
138 if report_type == 'Hang' and self.offer_restart:
139 self.w('ignore_future_problems').set_active(False)
140 self.w('ignore_future_problems').hide()
141- self.w('closed_button').show()
142- self.w('closed_button').set_label(_('Force Closed'))
143- self.w('continue_button').set_label(_('Relaunch'))
144+ self.w('relaunch_app').set_active(True)
145+ self.w('relaunch_app').show()
146 self.w('subtitle_label').show()
147 self.w('subtitle_label').set_label(
148 'You can wait to see if it wakes up, or close or relaunch it.')
149@@ -245,13 +243,14 @@
150 title = _('The program "%s" has stopped responding.') % name
151 self.w('title_label').set_label('<big><b>%s</b></big>' % title)
152 elif not self.report_file or report_type == 'Bug':
153+ self.w('remember_send_report_choice').hide()
154+ self.w('send_problem_notice_label').hide()
155 self.setup_bug_report()
156 elif report_type == 'KernelCrash' or report_type == 'KernelOops':
157 self.w('ignore_future_problems').set_active(False)
158 self.w('ignore_future_problems').hide()
159 self.w('title_label').set_label('<big><b>%s</b></big>' %
160 self.get_system_application_title())
161- self.w('closed_button').hide()
162 self.w('subtitle_label').hide()
163 icon = 'distributor-logo'
164 elif report_type == 'Package':
165@@ -261,7 +260,6 @@
166 self.w('subtitle_label').show()
167 else:
168 self.w('subtitle_label').hide()
169- self.w('closed_button').hide()
170 self.w('ignore_future_problems').hide()
171 self.w('title_label').set_label(
172 _('Sorry, a problem occurred while installing software.'))
173@@ -282,13 +280,9 @@
174
175 pid = apport.ui.get_pid(self.report)
176 still_running = pid and apport.ui.still_running(pid)
177- if 'ProcCmdline' not in self.report or still_running or not self.offer_restart:
178- self.w('closed_button').hide()
179- self.w('continue_button').set_label(_('Continue'))
180- else:
181- self.w('closed_button').show()
182- self.w('closed_button').set_label(_('Leave Closed'))
183- self.w('continue_button').set_label(_('Relaunch'))
184+ if 'ProcCmdline' in self.report and not still_running and self.offer_restart:
185+ self.w('relaunch_app').set_active(True)
186+ self.w('relaunch_app').show()
187 else:
188 icon = 'distributor-logo'
189 if report_type == 'RecoverableProblem':
190@@ -302,8 +296,6 @@
191 self.w('subtitle_label').set_label(
192 _('If you notice further problems, '
193 'try restarting the computer.'))
194- self.w('closed_button').hide()
195- self.w('continue_button').set_label(_('Continue'))
196 self.w('ignore_future_problems').set_label(_('Ignore future problems of this type'))
197 if self.report.get('CrashCounter'):
198 self.w('ignore_future_problems').show()
199@@ -353,7 +345,7 @@
200 if len(sys.argv) == 1:
201 d.set_focus_on_map(False)
202
203- return_value = {'report': False, 'blacklist': False,
204+ return_value = {'report': False, 'blacklist': False, 'remember': False,
205 'restart': False, 'examine': False}
206
207 def dialog_crash_dismissed(widget):
208@@ -366,17 +358,24 @@
209 Gtk.main_quit()
210 return
211
212- if self.w('send_error_report').get_active():
213- return_value['report'] = True
214+ # Force close or leave close app are the default actions with no specifier
215+ # in case of hangs or crash
216+ if self.w('relaunch_app').get_active() and self.desktop_info and self.offer_restart:
217+ return_value['restart'] = True
218+
219 if self.w('ignore_future_problems').get_active():
220 return_value['blacklist'] = True
221- if widget == self.w('continue_button') and self.desktop_info and self.offer_restart:
222- return_value['restart'] = True
223+
224+ return_value['remember'] = self.w('remember_send_report_choice').get_active()
225+
226+ if widget == self.w('continue_button'):
227+ return_value['report'] = self.allowed_to_report
228+
229 Gtk.main_quit()
230
231 self.w('dialog_crash_new').connect('destroy', dialog_crash_dismissed)
232 self.w('continue_button').connect('clicked', dialog_crash_dismissed)
233- self.w('closed_button').connect('clicked', dialog_crash_dismissed)
234+ self.w('dont_send_button').connect('clicked', dialog_crash_dismissed)
235 self.w('examine').connect('clicked', dialog_crash_dismissed)
236 Gtk.main()
237 return return_value
238
239=== modified file 'gtk/apport-gtk.ui'
240--- gtk/apport-gtk.ui 2015-06-05 10:42:49 +0000
241+++ gtk/apport-gtk.ui 2018-07-02 08:46:26 +0000
242@@ -162,6 +162,21 @@
243 </packing>
244 </child>
245 <child>
246+ <object class="GtkLabel" id="send_problem_notice_label">
247+ <property name="visible">False</property>
248+ <property name="can_focus">False</property>
249+ <property name="xalign">0</property>
250+ <property name="label" translatable="yes">Send problem report to the developers?</property>
251+ <property name="use_markup">True</property>
252+ <property name="wrap">True</property>
253+ </object>
254+ <packing>
255+ <property name="expand">False</property>
256+ <property name="fill">True</property>
257+ <property name="position">1</property>
258+ </packing>
259+ </child>
260+ <child>
261 <object class="GtkLabel" id="subtitle_label">
262 <property name="visible">True</property>
263 <property name="can_focus">False</property>
264@@ -172,7 +187,7 @@
265 <packing>
266 <property name="expand">False</property>
267 <property name="fill">True</property>
268- <property name="position">1</property>
269+ <property name="position">2</property>
270 </packing>
271 </child>
272 <child>
273@@ -199,7 +214,7 @@
274 <packing>
275 <property name="expand">True</property>
276 <property name="fill">True</property>
277- <property name="position">2</property>
278+ <property name="position">3</property>
279 </packing>
280 </child>
281 <child>
282@@ -209,13 +224,13 @@
283 <property name="orientation">vertical</property>
284 <property name="spacing">3</property>
285 <child>
286- <object class="GtkCheckButton" id="send_error_report">
287- <property name="label" translatable="yes">Send an error report to help fix this problem</property>
288- <property name="visible">True</property>
289+ <object class="GtkCheckButton" id="remember_send_report_choice">
290+ <property name="label" translatable="yes">Remember this in future</property>
291+ <property name="visible">False</property>
292 <property name="can_focus">True</property>
293 <property name="receives_default">False</property>
294 <property name="use_action_appearance">False</property>
295- <property name="active">True</property>
296+ <property name="active">False</property>
297 <property name="draw_indicator">True</property>
298 </object>
299 <packing>
300@@ -239,11 +254,26 @@
301 <property name="position">1</property>
302 </packing>
303 </child>
304+ <child>
305+ <object class="GtkCheckButton" id="relaunch_app">
306+ <property name="label" translatable="yes">Relaunch this application</property>
307+ <property name="visible">False</property>
308+ <property name="can_focus">True</property>
309+ <property name="receives_default">False</property>
310+ <property name="use_action_appearance">False</property>
311+ <property name="draw_indicator">True</property>
312+ </object>
313+ <packing>
314+ <property name="expand">False</property>
315+ <property name="fill">True</property>
316+ <property name="position">2</property>
317+ </packing>
318+ </child>
319 </object>
320 <packing>
321 <property name="expand">False</property>
322 <property name="fill">True</property>
323- <property name="position">3</property>
324+ <property name="position">4</property>
325 </packing>
326 </child>
327 </object>
328@@ -304,19 +334,6 @@
329 <property name="position">1</property>
330 </packing>
331 </child>
332- <child>
333- <object class="GtkButton" id="cancel_button">
334- <property name="label" translatable="yes">Cancel</property>
335- <property name="can_focus">True</property>
336- <property name="receives_default">True</property>
337- <property name="use_action_appearance">False</property>
338- </object>
339- <packing>
340- <property name="expand">False</property>
341- <property name="fill">True</property>
342- <property name="position">2</property>
343- </packing>
344- </child>
345 </object>
346 </child>
347 </object>
348@@ -332,8 +349,8 @@
349 <property name="can_focus">False</property>
350 <property name="spacing">6</property>
351 <child>
352- <object class="GtkButton" id="closed_button">
353- <property name="label" translatable="yes">Leave Closed</property>
354+ <object class="GtkButton" id="dont_send_button">
355+ <property name="label" translatable="yes">Don't send</property>
356 <property name="visible">True</property>
357 <property name="can_focus">True</property>
358 <property name="receives_default">True</property>
359@@ -347,7 +364,7 @@
360 </child>
361 <child>
362 <object class="GtkButton" id="continue_button">
363- <property name="label" translatable="yes">Continue</property>
364+ <property name="label" translatable="yes">Send</property>
365 <property name="visible">True</property>
366 <property name="can_focus">True</property>
367 <property name="receives_default">True</property>
368
369=== modified file 'kde/apport-kde'
370--- kde/apport-kde 2016-12-18 12:51:13 +0000
371+++ kde/apport-kde 2018-07-02 08:46:26 +0000
372@@ -369,7 +369,7 @@
373
374 response = self.dialog.exec_()
375
376- return_value = {'report': False, 'blacklist': False,
377+ return_value = {'report': False, 'blacklist': False, 'remember': False,
378 'restart': False, 'examine': False}
379 if response == QDialog.Rejected:
380 return return_value
381
382=== modified file 'test/test_ui.py'
383--- test/test_ui.py 2018-05-09 23:14:26 +0000
384+++ test/test_ui.py 2018-07-02 08:46:26 +0000
385@@ -502,7 +502,8 @@
386 self.ui.present_details_response = {'report': False,
387 'blacklist': False,
388 'examine': False,
389- 'restart': False}
390+ 'restart': False,
391+ 'remember': False}
392 self.ui.run_argv()
393 self.assertEqual(self.ui.offer_restart, True)
394
395@@ -534,7 +535,8 @@
396 self.ui.present_details_response = {'report': True,
397 'blacklist': False,
398 'examine': False,
399- 'restart': False}
400+ 'restart': False,
401+ 'remember': False}
402 self.assertEqual(self.ui.run_argv(), True)
403
404 self.assertEqual(self.ui.msg_severity, None)
405@@ -577,7 +579,8 @@
406 self.ui.present_details_response = {'report': True,
407 'blacklist': False,
408 'examine': False,
409- 'restart': False}
410+ 'restart': False,
411+ 'remember': False}
412 self.assertEqual(self.ui.run_argv(), True)
413 finally:
414 # kill test process
415@@ -691,7 +694,8 @@
416 self.ui.present_details_response = {'report': True,
417 'blacklist': False,
418 'examine': False,
419- 'restart': False}
420+ 'restart': False,
421+ 'remember': False}
422 self.ui.run_argv()
423
424 self.assertTrue(self.ui.report['Package'].startswith(apport.packaging.get_kernel_package()))
425@@ -729,7 +733,8 @@
426 self.ui.present_details_response = {'report': True,
427 'blacklist': False,
428 'examine': False,
429- 'restart': False}
430+ 'restart': False,
431+ 'remember': False}
432 self.assertEqual(self.ui.run_argv(), True)
433
434 self.assertEqual(self.ui.msg_text, None)
435@@ -788,7 +793,8 @@
436 self.ui.present_details_response = {'report': False,
437 'blacklist': False,
438 'examine': False,
439- 'restart': False}
440+ 'restart': False,
441+ 'remember': False}
442 self.ui.run_crash(report_file)
443 self.assertEqual(self.ui.msg_severity, None)
444 self.assertEqual(self.ui.msg_title, None)
445@@ -803,7 +809,8 @@
446 self.ui.present_details_response = {'report': True,
447 'blacklist': False,
448 'examine': False,
449- 'restart': False}
450+ 'restart': False,
451+ 'remember': False}
452 self.ui.run_crash(report_file)
453 self.assertEqual(self.ui.msg_severity, None, self.ui.msg_text)
454 self.assertEqual(self.ui.msg_title, None)
455@@ -832,7 +839,8 @@
456 self.ui.present_details_response = {'report': False,
457 'blacklist': True,
458 'examine': False,
459- 'restart': False}
460+ 'restart': False,
461+ 'remember': False}
462 self.ui.run_crash(report_file)
463 self.assertEqual(self.ui.msg_severity, None)
464 self.assertEqual(self.ui.msg_title, None)
465@@ -854,7 +862,8 @@
466 self.ui.present_details_response = {'report': True,
467 'blacklist': False,
468 'examine': False,
469- 'restart': False}
470+ 'restart': False,
471+ 'remember': False}
472 self.ui.run_crash(report_file)
473 self.assertEqual(self.ui.msg_severity, None, self.ui.msg_text)
474
475@@ -890,7 +899,8 @@
476 self.ui.present_details_response = {'report': True,
477 'blacklist': False,
478 'examine': False,
479- 'restart': False}
480+ 'restart': False,
481+ 'remember': False}
482 self.ui.run_crash(report_file)
483 self.assertEqual(self.ui.msg_severity, 'info', self.ui.msg_text)
484 self.assertTrue('decompress' in self.ui.msg_text)
485@@ -908,7 +918,8 @@
486 self.ui.present_details_response = {'report': True,
487 'blacklist': False,
488 'examine': False,
489- 'restart': False}
490+ 'restart': False,
491+ 'remember': False}
492
493 self.assertEqual(self.ui.run_argv(), True)
494
495@@ -926,7 +937,8 @@
496 self.ui.present_details_response = {'report': True,
497 'blacklist': False,
498 'examine': False,
499- 'restart': False}
500+ 'restart': False,
501+ 'remember': False}
502 self.assertEqual(self.ui.run_argv(), True)
503
504 self.assertTrue('It stinks.' in self.ui.msg_text, '%s: %s' %
505@@ -949,7 +961,8 @@
506 self.ui.present_details_response = {'report': True,
507 'blacklist': False,
508 'examine': False,
509- 'restart': False}
510+ 'restart': False,
511+ 'remember': False}
512
513 self.ui.run_crash(self.report_file.name)
514
515@@ -967,7 +980,8 @@
516 self.ui.present_details_response = {'report': True,
517 'blacklist': False,
518 'examine': False,
519- 'restart': False}
520+ 'restart': False,
521+ 'remember': False}
522
523 self.ui.run_crash(self.report_file.name)
524
525@@ -987,7 +1001,8 @@
526 self.ui.present_details_response = {'report': True,
527 'blacklist': False,
528 'examine': False,
529- 'restart': False}
530+ 'restart': False,
531+ 'remember': False}
532
533 self.ui.run_crash(self.report_file.name)
534
535@@ -1009,7 +1024,8 @@
536 self.ui.present_details_response = {'report': True,
537 'blacklist': False,
538 'examine': False,
539- 'restart': False}
540+ 'restart': False,
541+ 'remember': False}
542
543 self.ui.run_crash(self.report_file.name)
544
545@@ -1085,7 +1101,8 @@
546 self.ui.present_details_response = {'report': False,
547 'blacklist': False,
548 'examine': False,
549- 'restart': False}
550+ 'restart': False,
551+ 'remember': False}
552 self.ui.run_crash(report_file)
553 self.assertEqual(self.ui.msg_severity, None, 'has %s message: %s: %s' % (
554 self.ui.msg_severity, str(self.ui.msg_title), str(self.ui.msg_text)))
555@@ -1117,7 +1134,8 @@
556 self.ui.present_details_response = {'report': True,
557 'blacklist': False,
558 'examine': False,
559- 'restart': False}
560+ 'restart': False,
561+ 'remember': False}
562 self.ui.run_crash(report_file)
563 self.assertEqual(self.ui.cur_package, 'uninstalled_pkg')
564 self.assertEqual(self.ui.msg_severity, None, 'has %s message: %s: %s' % (
565@@ -1139,7 +1157,8 @@
566 self.ui.present_details_response = {'report': True,
567 'blacklist': False,
568 'examine': False,
569- 'restart': False}
570+ 'restart': False,
571+ 'remember': False}
572 self.assertRaises(SystemExit, self.ui.run_crash, report_file)
573
574 self.assertEqual(self.ui.msg_title, _('Invalid problem report'))
575@@ -1159,7 +1178,8 @@
576 self.ui.present_details_response = {'report': True,
577 'blacklist': False,
578 'examine': False,
579- 'restart': False}
580+ 'restart': False,
581+ 'remember': False}
582 self.ui.run_crash(report_file)
583
584 self.assertEqual(self.ui.msg_title, _('Problem in bash'))
585@@ -1199,7 +1219,8 @@
586 self.ui.present_details_response = {'report': True,
587 'blacklist': False,
588 'examine': False,
589- 'restart': False}
590+ 'restart': False,
591+ 'remember': False}
592 self.ui.run_crash(report_file)
593
594 self.assertFalse('ExecutableTimestamp' in self.ui.report)
595@@ -1230,7 +1251,8 @@
596 self.ui.present_details_response = {'report': False,
597 'blacklist': False,
598 'examine': False,
599- 'restart': False}
600+ 'restart': False,
601+ 'remember': False}
602 self.ui.run_crash(report_file)
603 self.assertEqual(self.ui.msg_severity, None)
604 self.assertEqual(self.ui.msg_title, None)
605@@ -1245,7 +1267,8 @@
606 self.ui.present_details_response = {'report': True,
607 'blacklist': False,
608 'examine': False,
609- 'restart': False}
610+ 'restart': False,
611+ 'remember': False}
612 self.ui.run_crash(report_file)
613 self.assertEqual(self.ui.msg_severity, None)
614 self.assertEqual(self.ui.msg_title, None)
615@@ -1292,7 +1315,8 @@
616 self.ui.present_details_response = {'report': False,
617 'blacklist': False,
618 'examine': False,
619- 'restart': False}
620+ 'restart': False,
621+ 'remember': False}
622 self.ui.run_crash(report_file)
623 self.assertEqual(self.ui.msg_severity, None, 'error: %s - %s' %
624 (self.ui.msg_title, self.ui.msg_text))
625@@ -1308,7 +1332,8 @@
626 self.ui.present_details_response = {'report': True,
627 'blacklist': False,
628 'examine': False,
629- 'restart': False}
630+ 'restart': False,
631+ 'remember': False}
632 self.ui.run_crash(report_file)
633 self.assertEqual(self.ui.msg_severity, None, str(self.ui.msg_title) +
634 ' ' + str(self.ui.msg_text))
635@@ -1336,7 +1361,8 @@
636 self.ui.present_details_response = {'report': True,
637 'blacklist': False,
638 'examine': False,
639- 'restart': False}
640+ 'restart': False,
641+ 'remember': False}
642 self.ui.run_crash(report_file)
643 self.assertEqual(self.ui.msg_severity, None, self.ui.msg_text)
644
645@@ -1390,7 +1416,8 @@
646 self.ui.present_details_response = {'report': True,
647 'blacklist': False,
648 'examine': False,
649- 'restart': False}
650+ 'restart': False,
651+ 'remember': False}
652 self.ui.run_crash(report_file)
653 self.assertEqual(self.ui.msg_severity, None, self.ui.msg_text)
654
655@@ -1424,7 +1451,8 @@
656 self.ui.present_details_response = {'report': True,
657 'blacklist': False,
658 'examine': False,
659- 'restart': False}
660+ 'restart': False,
661+ 'remember': False}
662 self.ui.run_crash(report_file)
663 self.assertEqual(self.ui.msg_severity, None, self.ui.msg_text)
664
665@@ -1464,7 +1492,8 @@
666 self.ui.present_details_response = {'report': True,
667 'blacklist': False,
668 'examine': False,
669- 'restart': False}
670+ 'restart': False,
671+ 'remember': False}
672 self.ui.run_crash(report_file)
673 self.assertEqual(self.ui.msg_severity, None, self.ui.msg_text)
674
675@@ -1484,7 +1513,8 @@
676 self.ui.present_details_response = {'report': True,
677 'blacklist': False,
678 'examine': False,
679- 'restart': False}
680+ 'restart': False,
681+ 'remember': False}
682
683 # known without URL
684 with open(report_file, 'wb') as f:
685@@ -1499,7 +1529,8 @@
686 self.ui.present_details_response = {'report': True,
687 'blacklist': False,
688 'examine': False,
689- 'restart': False}
690+ 'restart': False,
691+ 'remember': False}
692 # known with URL
693 with open(report_file, 'wb') as f:
694 r.write(f)
695@@ -1525,7 +1556,8 @@
696 self.ui.present_details_response = {'report': True,
697 'blacklist': False,
698 'examine': False,
699- 'restart': False}
700+ 'restart': False,
701+ 'remember': False}
702 self.ui.run_crash(report_file)
703 self.assertEqual(self.ui.opened_url, 'http://coreutils.bugs.example.com/%i' % self.ui.crashdb.latest_id())
704 # internal key should not be uploaded to the crash db
705@@ -1564,7 +1596,8 @@
706 self.ui.present_details_response = {'report': True,
707 'blacklist': False,
708 'examine': False,
709- 'restart': False}
710+ 'restart': False,
711+ 'remember': False}
712 self.ui.run_crashes()
713
714 if os.getuid() != 0:
715@@ -1611,7 +1644,8 @@
716 self.ui.present_details_response = {'report': True,
717 'blacklist': False,
718 'examine': False,
719- 'restart': False}
720+ 'restart': False,
721+ 'remember': False}
722
723 self.ui.crashdb.download(1)['SourcePackage'] = 'bash'
724 self.ui.crashdb.download(1)['Package'] = 'bash'
725@@ -1634,7 +1668,8 @@
726 self.ui.present_details_response = {'report': True,
727 'blacklist': False,
728 'examine': False,
729- 'restart': False}
730+ 'restart': False,
731+ 'remember': False}
732
733 self.assertEqual(self.ui.run_argv(), True)
734 self.assertEqual(self.ui.msg_severity, None, self.ui.msg_text)
735@@ -1656,7 +1691,8 @@
736 self.ui.present_details_response = {'report': True,
737 'blacklist': False,
738 'examine': False,
739- 'restart': False}
740+ 'restart': False,
741+ 'remember': False}
742
743 self.assertEqual(self.ui.run_argv(), True)
744 self.assertEqual(self.ui.msg_severity, None, self.ui.msg_text)
745@@ -1677,7 +1713,8 @@
746 self.ui.present_details_response = {'report': True,
747 'blacklist': False,
748 'examine': False,
749- 'restart': False}
750+ 'restart': False,
751+ 'remember': False}
752
753 with open(os.path.join(self.hookdir, 'source_foo.py'), 'w') as f:
754 f.write('def add_info(r, ui):\n r["MachineType"]="Laptop"\n')
755@@ -1712,7 +1749,8 @@
756 self.ui.present_details_response = {'report': True,
757 'blacklist': False,
758 'examine': False,
759- 'restart': False}
760+ 'restart': False,
761+ 'remember': False}
762
763 with open(os.path.join(self.hookdir, 'source_%s.py' % kernel_src), 'w') as f:
764 f.write('def add_info(r, ui):\n r["MachineType"]="Laptop"\n')
765@@ -1742,7 +1780,8 @@
766 self.ui.present_details_response = {'report': False,
767 'blacklist': False,
768 'examine': False,
769- 'restart': False}
770+ 'restart': False,
771+ 'remember': False}
772 self._run_hook('''report['begin'] = '1'
773 ui.information('InfoText')
774 report['end'] = '1'
775@@ -1757,7 +1796,8 @@
776 self.ui.present_details_response = {'report': False,
777 'blacklist': False,
778 'examine': False,
779- 'restart': False}
780+ 'restart': False,
781+ 'remember': False}
782 self.ui.question_yesno_response = True
783 self._run_hook('''report['begin'] = '1'
784 report['answer'] = str(ui.yesno('YesNo?'))
785@@ -1784,7 +1824,8 @@
786 self.ui.present_details_response = {'report': False,
787 'blacklist': False,
788 'examine': False,
789- 'restart': False}
790+ 'restart': False,
791+ 'remember': False}
792 self.ui.question_file_response = '/etc/fstab'
793 self._run_hook('''report['begin'] = '1'
794 report['answer'] = str(ui.file('YourFile?'))
795@@ -1806,7 +1847,8 @@
796 self.ui.present_details_response = {'report': False,
797 'blacklist': False,
798 'examine': False,
799- 'restart': False}
800+ 'restart': False,
801+ 'remember': False}
802 self.ui.question_choice_response = [1]
803 self._run_hook('''report['begin'] = '1'
804 report['answer'] = str(ui.choice('YourChoice?', ['foo', 'bar']))
805@@ -1840,7 +1882,8 @@
806 self.ui.present_details_response = {'report': True,
807 'blacklist': False,
808 'examine': False,
809- 'restart': False}
810+ 'restart': False,
811+ 'remember': False}
812 self.assertEqual(self.ui.run_argv(), True)
813 self.assertTrue('foobar" is not known' in self.ui.msg_text)
814 self.assertEqual(self.ui.msg_severity, 'error')
815@@ -1892,7 +1935,8 @@
816 self.ui.present_details_response = {'report': True,
817 'blacklist': False,
818 'examine': False,
819- 'restart': False}
820+ 'restart': False,
821+ 'remember': False}
822 self.assertEqual(self.ui.run_argv(), True)
823 self.assertEqual(self.ui.msg_text, None)
824 self.assertEqual(self.ui.msg_severity, None)
825@@ -1910,7 +1954,8 @@
826 self.ui.present_details_response = {'report': True,
827 'blacklist': False,
828 'examine': False,
829- 'restart': False}
830+ 'restart': False,
831+ 'remember': False}
832 self.assertEqual(self.ui.run_argv(), True)
833 self.assertEqual(self.ui.msg_text, None)
834 self.assertEqual(self.ui.msg_severity, None)
835@@ -1932,7 +1977,8 @@
836 self.ui.present_details_response = {'report': True,
837 'blacklist': False,
838 'examine': False,
839- 'restart': False}
840+ 'restart': False,
841+ 'remember': False}
842 self.ui.question_yesno_response = True
843 self.assertEqual(self.ui.run_argv(), True)
844 self.assertTrue(self.ui.present_details_shown)
845@@ -1963,7 +2009,8 @@
846 self.ui.present_details_response = {'report': True,
847 'blacklist': False,
848 'examine': False,
849- 'restart': False}
850+ 'restart': False,
851+ 'remember': False}
852
853 self.ui.question_choice_response = None
854 self.assertEqual(self.ui.run_argv(), True)
855@@ -2210,7 +2257,8 @@
856 self.ui.present_details_response = {'report': True,
857 'blacklist': False,
858 'examine': False,
859- 'restart': False}
860+ 'restart': False,
861+ 'remember': False}
862 self.assertEqual(self.ui.run_argv(), True)
863
864 self.assertEqual(self.ui.msg_severity, None)
865
866=== modified file 'test/test_ui_gtk.py'
867--- test/test_ui_gtk.py 2016-12-18 12:51:13 +0000
868+++ test/test_ui_gtk.py 2018-07-02 08:46:26 +0000
869@@ -89,7 +89,6 @@
870
871 def c(*args):
872 self.app.w('dialog_crash_new').destroy()
873- self.app.w('send_error_report').set_active(True)
874 GLib.idle_add(c)
875 result = self.app.ui_present_report_details(True)
876 self.assertFalse(result['report'])
877@@ -98,10 +97,11 @@
878 '''
879 +-----------------------------------------------------------------+
880 | [ logo] YourDistro has experienced an internal error. |
881- | |
882- | [x] Send an error report to help fix this problem. |
883- | |
884- | [ Show Details ] [ Continue ] |
885+ | Send problem report to the developers? |
886+ | |
887+ | [ ] Remember this in future |
888+ | |
889+ | [ Show Details ] [ Don't send ] [ Send ] |
890 +-----------------------------------------------------------------+
891 '''
892 self.app.report['ProblemType'] = 'KernelCrash'
893@@ -110,14 +110,15 @@
894 self.assertEqual(self.app.w('dialog_crash_new').get_title(), self.distro)
895 self.assertEqual(self.app.w('title_label').get_text(),
896 _('Sorry, %s has experienced an internal error.') % self.distro)
897- send_error_report = self.app.w('send_error_report')
898- self.assertTrue(send_error_report.get_property('visible'))
899- self.assertTrue(send_error_report.get_active())
900+ self.assertTrue(self.app.w('send_problem_notice_label').get_property('visible'))
901+ remember_send_error_report = self.app.w('remember_send_report_choice')
902+ self.assertTrue(remember_send_error_report.get_property('visible'))
903+ self.assertFalse(remember_send_error_report.get_active())
904 self.assertTrue(self.app.w('show_details').get_property('visible'))
905+ self.assertTrue(self.app.w('dont_send_button').get_property('visible'))
906 self.assertTrue(self.app.w('continue_button').get_property('visible'))
907 self.assertEqual(self.app.w('continue_button').get_label(),
908- _('Continue'))
909- self.assertFalse(self.app.w('closed_button').get_property('visible'))
910+ _('Send'))
911 self.assertFalse(self.app.w('subtitle_label').get_property('visible'))
912 self.assertFalse(self.app.w('ignore_future_problems').get_property('visible'))
913
914@@ -125,11 +126,12 @@
915 '''
916 +-----------------------------------------------------------------+
917 | [ error ] Sorry, a problem occurred while installing software. |
918+ | Send problem report to the developers? |
919 | Package: apport 1.2.3~0ubuntu1 |
920 | |
921- | [x] Send an error report to help fix this problem. |
922+ | [ ] Remember this in future |
923 | |
924- | [ Show Details ] [ Continue ] |
925+ | [ Show Details ] [ Don't send ] [ Send ] |
926 +-----------------------------------------------------------------+
927 '''
928 self.app.report['ProblemType'] = 'Package'
929@@ -139,36 +141,50 @@
930 self.assertEqual(self.app.w('dialog_crash_new').get_title(), self.distro)
931 self.assertEqual(self.app.w('title_label').get_text(),
932 _('Sorry, a problem occurred while installing software.'))
933- send_error_report = self.app.w('send_error_report')
934- self.assertTrue(send_error_report.get_property('visible'))
935- self.assertTrue(send_error_report.get_active())
936+ self.assertTrue(self.app.w('send_problem_notice_label').get_property('visible'))
937+ remember_send_error_report = self.app.w('remember_send_report_choice')
938+ self.assertTrue(remember_send_error_report.get_property('visible'))
939+ self.assertFalse(remember_send_error_report.get_active())
940 self.assertTrue(self.app.w('show_details').get_property('visible'))
941+ self.assertTrue(self.app.w('dont_send_button').get_property('visible'))
942 self.assertTrue(self.app.w('continue_button').get_property('visible'))
943 self.assertEqual(self.app.w('continue_button').get_label(),
944- _('Continue'))
945- self.assertFalse(self.app.w('closed_button').get_property('visible'))
946+ _('Send'))
947 self.assertTrue(self.app.w('subtitle_label').get_property('visible'))
948 self.assertEqual(self.app.w('subtitle_label').get_text(),
949 _('Package: apport 1.2.3~0ubuntu1'))
950
951 def test_regular_crash_thread_layout(self):
952 '''A thread of execution has failed, but the application persists.'''
953+ '''
954+ +-----------------------------------------------------------------+
955+ | [ logo] YourDistro has experienced an internal error. |
956+ | Send problem report to the developers? |
957+ | If you notice further problems, try restarting the |
958+ | computer. |
959+ | |
960+ | [ ] Remember this in future |
961+ | |
962+ | [ Show Details ] [ Don't send ] [ Send ] |
963+ +-----------------------------------------------------------------+
964+ '''
965 self.app.report['ProblemType'] = 'Crash'
966 self.app.report['ProcStatus'] = 'Name:\tupstart\nPid:\t1'
967 GLib.idle_add(Gtk.main_quit)
968 self.app.ui_present_report_details(True)
969- self.assertFalse(self.app.w('closed_button').get_property('visible'))
970- self.assertEqual(self.app.w('continue_button').get_label(), _('Continue'))
971+ self.assertTrue(self.app.w('dont_send_button').get_property('visible'))
972+ self.assertEqual(self.app.w('continue_button').get_label(), _('Send'))
973
974 def test_regular_crash_layout(self):
975 '''
976 +-----------------------------------------------------------------+
977 | [ apport ] The application Apport has closed unexpectedly. |
978- | |
979- | [x] Send an error report to help fix this problem. |
980- | [ ] Ignore future problems of this program version. |
981- | |
982- | [ Show Details ] [ Continue ] |
983+ | Send problem report to the developers? |
984+ | |
985+ | [ ] Remember this in future |
986+ | [ ] Ignore future problems of this program version |
987+ | |
988+ | [ Show Details ] [ Don't send ] [ Send ] |
989 +-----------------------------------------------------------------+
990 '''
991 self.app.report['ProblemType'] = 'Crash'
992@@ -186,15 +202,16 @@
993 self.assertEqual(self.app.w('dialog_crash_new').get_title(), self.distro)
994 self.assertEqual(self.app.w('title_label').get_text(),
995 _('The application Apport has closed unexpectedly.'))
996- send_error_report = self.app.w('send_error_report')
997- self.assertTrue(send_error_report.get_property('visible'))
998- self.assertTrue(send_error_report.get_active())
999+ self.assertTrue(self.app.w('send_problem_notice_label').get_property('visible'))
1000+ remember_send_error_report = self.app.w('remember_send_report_choice')
1001+ self.assertTrue(remember_send_error_report.get_property('visible'))
1002+ self.assertFalse(remember_send_error_report.get_active())
1003 self.assertTrue(self.app.w('show_details').get_property('visible'))
1004+ self.assertTrue(self.app.w('dont_send_button').get_property('visible'))
1005 # no ProcCmdline, cannot restart
1006 self.assertTrue(self.app.w('continue_button').get_property('visible'))
1007 self.assertEqual(self.app.w('continue_button').get_label(),
1008- _('Continue'))
1009- self.assertFalse(self.app.w('closed_button').get_property('visible'))
1010+ _('Send'))
1011 self.assertFalse(self.app.w('subtitle_label').get_property('visible'))
1012 self.assertTrue(self.app.w('ignore_future_problems').get_property('visible'))
1013 self.assertTrue(self.app.w('ignore_future_problems').get_label().endswith(
1014@@ -204,11 +221,13 @@
1015 '''
1016 +-----------------------------------------------------------------+
1017 | [ apport ] The application Apport has closed unexpectedly. |
1018- | |
1019- | [x] Send an error report to help fix this problem. |
1020- | [ ] Ignore future problems of this program version. |
1021- | |
1022- | [ Show Details ] [ Leave Closed ] [ Relaunch ] |
1023+ | Send problem report to the developers? |
1024+ | |
1025+ | [ ] Remember this in future |
1026+ | [ ] Ignore future problems of this program version |
1027+ | [X] Relaunch this application |
1028+ | |
1029+ | [ Show Details ] [ Don't send ] [ Send ] |
1030 +-----------------------------------------------------------------+
1031 '''
1032 # pretend we got called through run_crashes() which sets offer_restart
1033@@ -229,28 +248,32 @@
1034 self.assertEqual(self.app.w('dialog_crash_new').get_title(), self.distro)
1035 self.assertEqual(self.app.w('title_label').get_text(),
1036 _('The application Apport has closed unexpectedly.'))
1037- send_error_report = self.app.w('send_error_report')
1038- self.assertTrue(send_error_report.get_property('visible'))
1039- self.assertTrue(send_error_report.get_active())
1040+ self.assertTrue(self.app.w('send_problem_notice_label').get_property('visible'))
1041+ remember_send_error_report = self.app.w('remember_send_report_choice')
1042+ self.assertTrue(remember_send_error_report.get_property('visible'))
1043+ self.assertFalse(remember_send_error_report.get_active())
1044 self.assertTrue(self.app.w('show_details').get_property('visible'))
1045+ self.assertTrue(self.app.w('dont_send_button').get_property('visible'))
1046 self.assertTrue(self.app.w('continue_button').get_property('visible'))
1047 self.assertEqual(self.app.w('continue_button').get_label(),
1048- _('Relaunch'))
1049- self.assertTrue(self.app.w('closed_button').get_property('visible'))
1050+ _('Send'))
1051 self.assertFalse(self.app.w('subtitle_label').get_property('visible'))
1052 self.assertTrue(self.app.w('ignore_future_problems').get_property('visible'))
1053 self.assertTrue(self.app.w('ignore_future_problems').get_label().endswith(
1054 'of this program version'))
1055+ self.assertTrue(self.app.w('relaunch_app').get_property('visible'))
1056+ self.assertTrue(self.app.w('relaunch_app').get_active())
1057
1058 def test_regular_crash_layout_norestart(self):
1059 '''
1060 +-----------------------------------------------------------------+
1061 | [ apport ] The application Apport has closed unexpectedly. |
1062+ | Send problem report to the developers? |
1063 | |
1064- | [x] Send an error report to help fix this problem. |
1065+ | [ ] Remember this in future |
1066 | [ ] Ignore future problems of this program version. |
1067 | |
1068- | [ Show Details ] [ Continue ] |
1069+ | [ Show Details ] [ Don't send ] [ Send ] |
1070 +-----------------------------------------------------------------+
1071 '''
1072 # pretend we did not get called through run_crashes(), thus no offer_restart
1073@@ -270,19 +293,28 @@
1074 self.assertEqual(self.app.w('dialog_crash_new').get_title(), self.distro)
1075 self.assertEqual(self.app.w('title_label').get_text(),
1076 _('The application Apport has closed unexpectedly.'))
1077+ self.assertTrue(self.app.w('send_problem_notice_label').get_property('visible'))
1078+ remember_send_error_report = self.app.w('remember_send_report_choice')
1079+ self.assertTrue(remember_send_error_report.get_property('visible'))
1080+ self.assertFalse(remember_send_error_report.get_active())
1081+ self.assertTrue(self.app.w('show_details').get_property('visible'))
1082+ self.assertTrue(self.app.w('dont_send_button').get_property('visible'))
1083 self.assertTrue(self.app.w('continue_button').get_property('visible'))
1084 self.assertEqual(self.app.w('continue_button').get_label(),
1085- _('Continue'))
1086- self.assertFalse(self.app.w('closed_button').get_property('visible'))
1087+ _('Send'))
1088
1089 def test_hang_layout(self):
1090 '''
1091 +-----------------------------------------------------------------+
1092 | [ apport ] The application Apport has stopped responding. |
1093- | |
1094- | [x] Send an error report to help fix this problem. |
1095- | |
1096- | [ Show Details ] [ Force Closed ] [ Relaunch ] |
1097+ | Send problem report to the developers? |
1098+ | You can wait to see if it wakes up, or close, or |
1099+ | relaunch it. |
1100+ | |
1101+ | [ ] Remember this in future |
1102+ | [X] Relaunch this application |
1103+ | |
1104+ | [ Show Details ] [ Don't send ] [ Send ] |
1105 +-----------------------------------------------------------------+
1106 '''
1107 # pretend we got called through run_crashes() which sets offer_restart
1108@@ -305,16 +337,15 @@
1109 self.assertEqual(self.app.w('subtitle_label').get_text(),
1110 _('You can wait to see if it wakes up, or close or '
1111 'relaunch it.'))
1112- send_error_report = self.app.w('send_error_report')
1113- self.assertTrue(send_error_report.get_property('visible'))
1114- self.assertTrue(send_error_report.get_active())
1115+ self.assertTrue(self.app.w('send_problem_notice_label').get_property('visible'))
1116+ remember_send_error_report = self.app.w('remember_send_report_choice')
1117+ self.assertTrue(remember_send_error_report.get_property('visible'))
1118+ self.assertFalse(remember_send_error_report.get_active())
1119 self.assertTrue(self.app.w('show_details').get_property('visible'))
1120+ self.assertTrue(self.app.w('dont_send_button').get_property('visible'))
1121 self.assertTrue(self.app.w('continue_button').get_property('visible'))
1122 self.assertEqual(self.app.w('continue_button').get_label(),
1123- _('Relaunch'))
1124- self.assertTrue(self.app.w('closed_button').get_property('visible'))
1125- self.assertEqual(self.app.w('closed_button').get_label(),
1126- _('Force Closed'))
1127+ _('Send'))
1128 self.assertTrue(self.app.w('subtitle_label').get_property('visible'))
1129 self.assertFalse(self.app.w('ignore_future_problems').get_property('visible'))
1130
1131@@ -322,13 +353,14 @@
1132 '''
1133 +---------------------------------------------------------------+
1134 | [ logo ] Sorry, YourDistro has experienced an internal error. |
1135+ | Send problem report to the developers? |
1136 | If you notice further problems, try restarting the |
1137 | computer |
1138 | |
1139- | [x] Send an error report to help fix this problem. |
1140+ | [ ] Remember this in future |
1141 | [ ] Ignore future problems of this type. |
1142 | |
1143- | [ Show Details ] [ Continue ] |
1144+ | [ Show Details ] [ Don't send ] [ Send ] |
1145 +---------------------------------------------------------------+
1146 '''
1147 self.app.report['ProblemType'] = 'Crash'
1148@@ -342,14 +374,15 @@
1149 self.assertEqual(self.app.w('subtitle_label').get_text(),
1150 _('If you notice further problems, try restarting the computer.'))
1151 self.assertTrue(self.app.w('subtitle_label').get_property('visible'))
1152- send_error_report = self.app.w('send_error_report')
1153- self.assertTrue(send_error_report.get_property('visible'))
1154- self.assertTrue(send_error_report.get_active())
1155+ self.assertTrue(self.app.w('send_problem_notice_label').get_property('visible'))
1156+ remember_send_error_report = self.app.w('remember_send_report_choice')
1157+ self.assertTrue(remember_send_error_report.get_property('visible'))
1158+ self.assertFalse(remember_send_error_report.get_active())
1159 self.assertTrue(self.app.w('show_details').get_property('visible'))
1160+ self.assertTrue(self.app.w('dont_send_button').get_property('visible'))
1161 self.assertTrue(self.app.w('continue_button').get_property('visible'))
1162 self.assertEqual(self.app.w('continue_button').get_label(),
1163- _('Continue'))
1164- self.assertFalse(self.app.w('closed_button').get_property('visible'))
1165+ _('Send'))
1166 self.assertTrue(self.app.w('ignore_future_problems').get_property('visible'))
1167 self.assertTrue(self.app.w('ignore_future_problems').get_label().endswith(
1168 'of this type'))
1169@@ -358,12 +391,13 @@
1170 '''
1171 +-------------------------------------------------------------------+
1172 | [ ubuntu ] Sorry, the application apport has closed unexpectedly. |
1173+ | Send problem report to the developers? |
1174 | If you notice further problems, try restarting the |
1175 | computer |
1176 | |
1177- | [x] Send an error report to help fix this problem. |
1178+ | [ ] Remember this in future |
1179 | |
1180- | [ Show Details ] [ Continue ] |
1181+ | [ Show Details ] [ Don't send ] [ Send ] |
1182 +-------------------------------------------------------------------+
1183 '''
1184 self.app.report['ProblemType'] = 'Crash'
1185@@ -382,14 +416,15 @@
1186 self.assertEqual(self.app.w('subtitle_label').get_text(),
1187 _('If you notice further problems, try restarting the computer.'))
1188 self.assertTrue(self.app.w('subtitle_label').get_property('visible'))
1189- send_error_report = self.app.w('send_error_report')
1190- self.assertTrue(send_error_report.get_property('visible'))
1191- self.assertTrue(send_error_report.get_active())
1192+ self.assertTrue(self.app.w('send_problem_notice_label').get_property('visible'))
1193+ remember_send_error_report = self.app.w('remember_send_report_choice')
1194+ self.assertTrue(remember_send_error_report.get_property('visible'))
1195+ self.assertFalse(remember_send_error_report.get_active())
1196 self.assertTrue(self.app.w('show_details').get_property('visible'))
1197+ self.assertTrue(self.app.w('dont_send_button').get_property('visible'))
1198 self.assertTrue(self.app.w('continue_button').get_property('visible'))
1199 self.assertEqual(self.app.w('continue_button').get_label(),
1200- _('Continue'))
1201- self.assertFalse(self.app.w('closed_button').get_property('visible'))
1202+ _('Send'))
1203
1204 del self.app.report['ExecutablePath']
1205 GLib.idle_add(Gtk.main_quit)
1206@@ -405,10 +440,11 @@
1207 '''
1208 +---------------------------------------------------------------------+
1209 | [ apport ] The application Apport has closed unexpectedly. |
1210- | |
1211- | [x] Send an error report to help fix this problem. |
1212- | |
1213- | [ Show Details ] [ Examine locally ] [ Leave Closed ] [ Relaunch ] |
1214+ | Send problem report to the developers? |
1215+ | |
1216+ | [ ] Remember this in future |
1217+ | |
1218+ | [ Show Details ] [ Examine locally ] [ Don't send ] [ Send ] |
1219 +---------------------------------------------------------------------+
1220 '''
1221 self.app.report['ProblemType'] = 'Crash'
1222@@ -435,7 +471,7 @@
1223 | | ... | |
1224 | +----------------------------------------------------+ |
1225 | |
1226- | [ Cancel ] [ Send ] |
1227+ | [ Don't send ] [ Send ] |
1228 +-------------------------------------------------------------------+
1229 '''
1230 self.app.report_file = None
1231@@ -444,15 +480,15 @@
1232 self.assertEqual(self.app.w('title_label').get_text(),
1233 _('Send problem report to the developers?'))
1234 self.assertFalse(self.app.w('subtitle_label').get_property('visible'))
1235- send_error_report = self.app.w('send_error_report')
1236- self.assertFalse(send_error_report.get_property('visible'))
1237- self.assertTrue(send_error_report.get_active())
1238+ self.assertFalse(self.app.w('send_problem_notice_label').get_property('visible'))
1239+ remember_send_error_report = self.app.w('remember_send_report_choice')
1240+ self.assertFalse(remember_send_error_report.get_property('visible'))
1241+ self.assertFalse(remember_send_error_report.get_active())
1242 self.assertFalse(self.app.w('show_details').get_property('visible'))
1243 self.assertTrue(self.app.w('continue_button').get_property('visible'))
1244 self.assertEqual(self.app.w('continue_button').get_label(),
1245 _('Send'))
1246- self.assertFalse(self.app.w('closed_button').get_property('visible'))
1247- self.assertTrue(self.app.w('cancel_button').get_property('visible'))
1248+ self.assertTrue(self.app.w('dont_send_button').get_property('visible'))
1249 self.assertTrue(self.app.w('details_scrolledwindow').get_property('visible'))
1250 self.assertTrue(self.app.w('dialog_crash_new').get_resizable())
1251
1252@@ -469,15 +505,15 @@
1253 self.assertEqual(self.app.w('title_label').get_text(),
1254 _('Send problem report to the developers?'))
1255 self.assertFalse(self.app.w('subtitle_label').get_property('visible'))
1256- send_error_report = self.app.w('send_error_report')
1257- self.assertFalse(send_error_report.get_property('visible'))
1258- self.assertTrue(send_error_report.get_active())
1259+ self.assertFalse(self.app.w('send_problem_notice_label').get_property('visible'))
1260+ remember_send_error_report = self.app.w('remember_send_report_choice')
1261+ self.assertFalse(remember_send_error_report.get_property('visible'))
1262+ self.assertFalse(remember_send_error_report.get_active())
1263 self.assertFalse(self.app.w('show_details').get_property('visible'))
1264 self.assertTrue(self.app.w('continue_button').get_property('visible'))
1265 self.assertEqual(self.app.w('continue_button').get_label(),
1266 _('Send'))
1267- self.assertFalse(self.app.w('closed_button').get_property('visible'))
1268- self.assertTrue(self.app.w('cancel_button').get_property('visible'))
1269+ self.assertTrue(self.app.w('dont_send_button').get_property('visible'))
1270 self.assertTrue(self.app.w('details_scrolledwindow').get_property('visible'))
1271 self.assertTrue(self.app.w('dialog_crash_new').get_resizable())
1272
1273@@ -485,11 +521,12 @@
1274 '''
1275 +-----------------------------------------------------------------+
1276 | [ logo ] The application Foo has experienced an internal error. |
1277+ | Send problem report to the developers? |
1278 | Developer-specified error text. |
1279 | |
1280- | [x] Send an error report to help fix this problem. |
1281+ | [ ] Remember this in future |
1282 | |
1283- | [ Show Details ] [ Continue ] |
1284+ | [ Show Details ] [ Don't send ] [ Send ] |
1285 +-----------------------------------------------------------------+
1286 '''
1287 self.app.report['ProblemType'] = 'RecoverableProblem'
1288@@ -511,21 +548,22 @@
1289 msg = 'Some developer-specified error text.'
1290 self.assertEqual(self.app.w('subtitle_label').get_text(), msg)
1291 self.assertTrue(self.app.w('subtitle_label').get_property('visible'))
1292- send_error_report = self.app.w('send_error_report')
1293- self.assertTrue(send_error_report.get_property('visible'))
1294- self.assertTrue(send_error_report.get_active())
1295+ self.assertTrue(self.app.w('send_problem_notice_label').get_property('visible'))
1296+ remember_send_error_report = self.app.w('remember_send_report_choice')
1297+ self.assertTrue(remember_send_error_report.get_property('visible'))
1298+ self.assertFalse(remember_send_error_report.get_active())
1299 self.assertTrue(self.app.w('show_details').get_property('visible'))
1300 self.assertTrue(self.app.w('continue_button').get_property('visible'))
1301 self.assertEqual(self.app.w('continue_button').get_label(),
1302- _('Continue'))
1303- self.assertFalse(self.app.w('closed_button').get_property('visible'))
1304+ _('Send'))
1305
1306 def test_administrator_disabled_reporting(self):
1307 GLib.idle_add(Gtk.main_quit)
1308 self.app.ui_present_report_details(False)
1309- send_error_report = self.app.w('send_error_report')
1310- self.assertFalse(send_error_report.get_property('visible'))
1311- self.assertFalse(send_error_report.get_active())
1312+ self.assertFalse(self.app.w('send_problem_notice_label').get_property('visible'))
1313+ remember_send_error_report = self.app.w('remember_send_report_choice')
1314+ self.assertFalse(remember_send_error_report.get_property('visible'))
1315+ self.assertFalse(remember_send_error_report.get_active())
1316
1317 @patch.object(GTKUserInterface, 'open_url')
1318 @patch.object(GTKUserInterface, 'ui_start_upload_progress')
1319@@ -759,9 +797,9 @@
1320 '''Bug report for installed package'''
1321
1322 def c(*args):
1323- if not self.app.w('cancel_button').get_visible():
1324+ if not self.app.w('dont_send_button').get_visible():
1325 return True
1326- self.app.w('cancel_button').clicked()
1327+ self.app.w('dont_send_button').clicked()
1328 return False
1329
1330 self.app.report_file = None
1331@@ -778,9 +816,9 @@
1332 '''Bug report for uninstalled package'''
1333
1334 def c(*args):
1335- if not self.app.w('cancel_button').get_visible():
1336+ if not self.app.w('dont_send_button').get_visible():
1337 return True
1338- self.app.w('cancel_button').clicked()
1339+ self.app.w('dont_send_button').clicked()
1340 return False
1341
1342 pkg = apport.packaging.get_uninstalled_package()

Subscribers

People subscribed via source and target branches