LPExcuseBugsPolicy: handle the ExcuseBugs file not existing

When we're not run via b1 - for example when running the testsuite -
this file will not have been created.

Treat that as if there are no bugs to note.
master
Iain Lane 4 years ago
parent 4c27eadffa
commit d592ee61ae
No known key found for this signature in database
GPG Key ID: E352D5C51C5041D4

@ -2,6 +2,7 @@ import json
import os import os
import time import time
from abc import abstractmethod from abc import abstractmethod
from collections import defaultdict
from urllib.parse import quote from urllib.parse import quote
import apt_pkg import apt_pkg
@ -699,6 +700,7 @@ class LPBlockBugPolicy(BasePolicy):
return PolicyVerdict.REJECTED_PERMANENTLY return PolicyVerdict.REJECTED_PERMANENTLY
class LPExcuseBugsPolicy(BasePolicy): class LPExcuseBugsPolicy(BasePolicy):
"""update-excuse Launchpad bug policy to link to a bug report, does not prevent migration """update-excuse Launchpad bug policy to link to a bug report, does not prevent migration
@ -716,26 +718,25 @@ class LPExcuseBugsPolicy(BasePolicy):
def initialise(self, britney): def initialise(self, britney):
super().initialise(britney) super().initialise(britney)
self.excuse_bugs = {} # srcpkg -> [(bug, date), ...] self.excuse_bugs = defaultdict(list) # srcpkg -> [(bug, date), ...]
filename = os.path.join(self.options.unstable, "ExcuseBugs") filename = os.path.join(self.options.unstable, "ExcuseBugs")
self.log("Loading user-supplied excuse bug data from %s" % filename) self.log("Loading user-supplied excuse bug data from %s" % filename)
for line in open(filename): try:
l = line.split() for line in open(filename):
if len(l) != 3: l = line.split()
self.log("ExcuseBugs, ignoring malformed line %s" % line, type='W') if len(l) != 3:
continue self.log("ExcuseBugs, ignoring malformed line %s" % line, type='W')
try: continue
self.excuse_bugs.setdefault(l[0], []) try:
self.excuse_bugs[l[0]].append((l[1], int(l[2]))) self.excuse_bugs[l[0]].append((l[1], int(l[2])))
except ValueError: except ValueError:
self.log("ExcuseBugs, unable to parse \"%s\"" % line, type='E') self.log("ExcuseBugs, unable to parse \"%s\"" % line, type='E')
except FileNotFoundError:
self.log("ExcuseBugs, data file not found, no bugs will be recorded" % filename)
def apply_policy_impl(self, excuse_bugs_info, suite, source_name, source_data_tdist, source_data_srcdist, excuse): def apply_policy_impl(self, excuse_bugs_info, suite, source_name, source_data_tdist, source_data_srcdist, excuse):
try: excuse_bug = self.excuse_bugs[source_name]
excuse_bug = self.excuse_bugs[source_name]
except KeyError:
return PolicyVerdict.PASS
for bug, date in excuse_bug: for bug, date in excuse_bug:
excuse_bugs_info[bug] = date excuse_bugs_info[bug] = date

Loading…
Cancel
Save