Merge lp:~mabac/svammel/bug-749563-set-severity into lp:svammel

Proposed by Mattias Backman
Status: Merged
Merged at revision: 82
Proposed branch: lp:~mabac/svammel/bug-749563-set-severity
Merge into: lp:svammel
Diff against target: 199 lines (+76/-11)
4 files modified
bug_reporting.py (+15/-10)
config.py (+19/-0)
file-failures.py (+3/-1)
tests/test_fail_filer.py (+39/-0)
To merge this branch: bzr merge lp:~mabac/svammel/bug-749563-set-severity
Reviewer Review Type Date Requested Status
James Westby (community) Approve
Matthias Klose Pending
Review via email: mp+56380@code.launchpad.net

Description of the change

Hi,

This branch adds the feature to set Importance for all newly created bugs.

As a side effect it also adds the --ignore-errors parameter which might be used when targeting series etc in the future.

If --ignore-errors is specified only non-critical errors may be ignored, like setting importance fails. Certain errors like an archive being offline will of course still have to make the script bail.

Thanks,

Mattias

To post a comment you must log in.
Revision history for this message
James Westby (james-w) wrote :

Hi,

I don't really like globals, as they can cause many problems later, but
they are easy to do here, and given the purpose of this script it likely
won't cause many issues.

Thanks,

James

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'bug_reporting.py'
--- bug_reporting.py 2011-03-22 10:17:01 +0000
+++ bug_reporting.py 2011-04-05 14:43:58 +0000
@@ -10,6 +10,7 @@
10###############################################################################10###############################################################################
11from config import (11from config import (
12 print_message,12 print_message,
13 continue_on_error,
13 )14 )
1415
1516
@@ -20,16 +21,7 @@
20 return project.self_link21 return project.self_link
2122
2223
23def file_bug(package_name, description, title, tags, lp):24def file_bug_by_url(target_url, description, title, tags, lp, importance=None):
24 """ File a bug on the package specified by name.
25
26 Returns the newly created bug or None if no bug was filed.
27 """
28 project_url = get_project_url(package_name, lp)
29 return file_bug_by_url(project_url, description, title, tags, lp)
30
31
32def file_bug_by_url(target_url, description, title, tags, lp):
33 """ File a bug on the bug target specified by target_url.25 """ File a bug on the bug target specified by target_url.
3426
35 Returns the newly created bug or None if no bug was filed.27 Returns the newly created bug or None if no bug was filed.
@@ -40,12 +32,25 @@
40 tags=tags)32 tags=tags)
41 if bug is not None:33 if bug is not None:
42 print 'Filed bug %i: %s' % (bug.id, bug.web_link)34 print 'Filed bug %i: %s' % (bug.id, bug.web_link)
35 if importance is not None:
36 set_bugtask_importance(bug, importance)
43 else:37 else:
44 print "Error: unable to file bug '%s'." % title38 print "Error: unable to file bug '%s'." % title
4539
46 return bug40 return bug
4741
4842
43def set_bugtask_importance(bug, importance):
44 try:
45 for bug_task in bug.bug_tasks:
46 bug_task.importance = importance
47 bug_task.lp_save()
48 except:
49 if continue_on_error():
50 print "Error: unable to set bug importance to '%s' but will proceed." % importance
51 else:
52 raise
53
49def bug_already_filed(package_name, lp):54def bug_already_filed(package_name, lp):
50 """ Check to see if this project already has an active bug."""55 """ Check to see if this project already has an active bug."""
51 project_url = get_project_url(package_name, lp)56 project_url = get_project_url(package_name, lp)
5257
=== modified file 'config.py'
--- config.py 2011-03-22 10:17:01 +0000
+++ config.py 2011-04-05 14:43:58 +0000
@@ -34,6 +34,7 @@
34base_api_url = ''34base_api_url = ''
35lp = None35lp = None
36verbose = False36verbose = False
37ignore_errors = False
3738
3839
39def verify_inited():40def verify_inited():
@@ -46,6 +47,15 @@
46 verbose = state47 verbose = state
4748
4849
50def set_ignore_errors(state):
51 global ignore_errors
52 ignore_errors = state
53
54
55def continue_on_error():
56 return ignore_errors
57
58
49def get_service_root():59def get_service_root():
50 verify_inited()60 verify_inited()
51 return service_root61 return service_root
@@ -120,6 +130,15 @@
120 parser.add_argument(130 parser.add_argument(
121 '--logfile', required=False,131 '--logfile', required=False,
122 help="Path to file where reported bugs are logged.")132 help="Path to file where reported bugs are logged.")
133 parser.add_argument(
134 '--importance',
135 choices=['Unknown', 'Critical', 'High', 'Medium', 'Low',
136 'Wishlist', 'Undecided'],
137 help='If specified, sets the Importance of all created bugs.')
138 parser.add_argument(
139 '--ignore-errors', action='store_true', dest='ignoreerrors',
140 help='Ignore errors that do not prevent proper completion, such as ' \
141 'failure to set bug attributes.')
123142
124 return parser143 return parser
125144
126145
=== modified file 'file-failures.py'
--- file-failures.py 2011-03-23 08:25:30 +0000
+++ file-failures.py 2011-04-05 14:43:58 +0000
@@ -25,6 +25,7 @@
25 get_args_parser,25 get_args_parser,
26 print_message,26 print_message,
27 set_verbose_messages,27 set_verbose_messages,
28 set_ignore_errors,
28)29)
29from build_log import (30from build_log import (
30 get_file_contents,31 get_file_contents,
@@ -47,6 +48,7 @@
47parser = get_args_parser()48parser = get_args_parser()
48args = parser.parse_args()49args = parser.parse_args()
49set_verbose_messages(args.verbose)50set_verbose_messages(args.verbose)
51set_ignore_errors(args.ignoreerrors)
5052
51init(args.serviceroot, 'testing', '~/.launchpadlib/cache/')53init(args.serviceroot, 'testing', '~/.launchpadlib/cache/')
5254
@@ -102,7 +104,7 @@
102 "Will file bug for %s\n desc: %s\n title: %s\n tags: %s" %104 "Will file bug for %s\n desc: %s\n title: %s\n tags: %s" %
103 (spph.package_name, bug_description[0:220], bug_title, bug_tags))105 (spph.package_name, bug_description[0:220], bug_title, bug_tags))
104 bug = file_bug_by_url(spph.url, bug_description, bug_title,106 bug = file_bug_by_url(spph.url, bug_description, bug_title,
105 bug_tags, get_launchpad())107 bug_tags, get_launchpad(), args.importance)
106 if bug is not None and args.logfile is not None:108 if bug is not None and args.logfile is not None:
107 bug_log.write_entry(109 bug_log.write_entry(
108 LogEntry(spph.package_name, spph.version, fail_platform,110 LogEntry(spph.package_name, spph.version, fail_platform,
109111
=== modified file 'tests/test_fail_filer.py'
--- tests/test_fail_filer.py 2011-03-01 11:50:47 +0000
+++ tests/test_fail_filer.py 2011-04-05 14:43:58 +0000
@@ -22,6 +22,7 @@
22 )22 )
23from bug_reporting import (23from bug_reporting import (
24 bug_already_filed_by_url,24 bug_already_filed_by_url,
25 set_bugtask_importance,
25# get_project_url,26# get_project_url,
26# file_bug,27# file_bug,
27 )28 )
@@ -35,6 +36,7 @@
35 inited,36 inited,
36 ConfigInitError,37 ConfigInitError,
37 LaunchpadError,38 LaunchpadError,
39 set_ignore_errors,
38 )40 )
3941
4042
@@ -79,6 +81,23 @@
7981
80class TestFileBug(TestCaseWithFixtures):82class TestFileBug(TestCaseWithFixtures):
8183
84 class MockBug:
85 def __init__(self):
86 self.bug_tasks = []
87 def add_bug_task(self, bug_task):
88 self.bug_tasks.append(bug_task)
89
90 class MockBugTask:
91 def __init__(self, will_fail_on_save):
92 self.will_fail_on_save = will_fail_on_save
93 self.importance = 'Undecided'
94 self.has_saved = False
95 def lp_save(self):
96 if self.will_fail_on_save:
97 raise Exception()
98 else:
99 self.has_saved = True
100
82 def setUp(self):101 def setUp(self):
83 super(TestFileBug, self).setUp()102 super(TestFileBug, self).setUp()
84103
@@ -106,6 +125,26 @@
106 self.assertFalse(bug_already_filed_by_url('https://dummy',125 self.assertFalse(bug_already_filed_by_url('https://dummy',
107 MockLaunchpad()))126 MockLaunchpad()))
108127
128 def test_set_importance_saves(self):
129 bug = self.MockBug()
130 bug_task = self.MockBugTask(False)
131 bug.add_bug_task(bug_task)
132 set_bugtask_importance(bug, 'High')
133 self.assertEquals(True, bug_task.has_saved)
134
135 def test_set_importance_can_ignore_errors(self):
136 set_ignore_errors(True)
137 bug = self.MockBug()
138 bug.add_bug_task(self.MockBugTask(True))
139 set_bugtask_importance(bug, 'High')
140
141 def test_set_importance_raises(self):
142 set_ignore_errors(False)
143 bug = self.MockBug()
144 bug.add_bug_task(self.MockBugTask(True))
145 self.assertRaises(Exception, set_bugtask_importance, bug, 'High')
146
147
109# def test_file_bug(self):148# def test_file_bug(self):
110# bug = file_bug(self.project_name, self.description, self.title,149# bug = file_bug(self.project_name, self.description, self.title,
111# self.tags, self.lp)150# self.tags, self.lp)

Subscribers

People subscribed via source and target branches