Index: third_party/buildbot_7_12/buildbot/steps/python.py |
diff --git a/third_party/buildbot_7_12/buildbot/steps/python.py b/third_party/buildbot_7_12/buildbot/steps/python.py |
deleted file mode 100644 |
index 7f87aa76c785b6b8411aa3b44753850b288b8f40..0000000000000000000000000000000000000000 |
--- a/third_party/buildbot_7_12/buildbot/steps/python.py |
+++ /dev/null |
@@ -1,187 +0,0 @@ |
- |
-from buildbot.status.builder import SUCCESS, FAILURE, WARNINGS |
-from buildbot.steps.shell import ShellCommand |
-import re |
- |
-try: |
- import cStringIO |
- StringIO = cStringIO.StringIO |
-except ImportError: |
- from StringIO import StringIO |
- |
- |
-class BuildEPYDoc(ShellCommand): |
- name = "epydoc" |
- command = ["make", "epydocs"] |
- description = ["building", "epydocs"] |
- descriptionDone = ["epydoc"] |
- |
- def createSummary(self, log): |
- import_errors = 0 |
- warnings = 0 |
- errors = 0 |
- |
- for line in StringIO(log.getText()): |
- if line.startswith("Error importing "): |
- import_errors += 1 |
- if line.find("Warning: ") != -1: |
- warnings += 1 |
- if line.find("Error: ") != -1: |
- errors += 1 |
- |
- self.descriptionDone = self.descriptionDone[:] |
- if import_errors: |
- self.descriptionDone.append("ierr=%d" % import_errors) |
- if warnings: |
- self.descriptionDone.append("warn=%d" % warnings) |
- if errors: |
- self.descriptionDone.append("err=%d" % errors) |
- |
- self.import_errors = import_errors |
- self.warnings = warnings |
- self.errors = errors |
- |
- def evaluateCommand(self, cmd): |
- if cmd.rc != 0: |
- return FAILURE |
- if self.warnings or self.errors: |
- return WARNINGS |
- return SUCCESS |
- |
- |
-class PyFlakes(ShellCommand): |
- name = "pyflakes" |
- command = ["make", "pyflakes"] |
- description = ["running", "pyflakes"] |
- descriptionDone = ["pyflakes"] |
- flunkOnFailure = False |
- flunkingIssues = ["undefined"] # any pyflakes lines like this cause FAILURE |
- |
- MESSAGES = ("unused", "undefined", "redefs", "import*", "misc") |
- |
- def createSummary(self, log): |
- counts = {} |
- summaries = {} |
- for m in self.MESSAGES: |
- counts[m] = 0 |
- summaries[m] = [] |
- |
- first = True |
- for line in StringIO(log.getText()).readlines(): |
- # the first few lines might contain echoed commands from a 'make |
- # pyflakes' step, so don't count these as warnings. Stop ignoring |
- # the initial lines as soon as we see one with a colon. |
- if first: |
- if line.find(":") != -1: |
- # there's the colon, this is the first real line |
- first = False |
- # fall through and parse the line |
- else: |
- # skip this line, keep skipping non-colon lines |
- continue |
- if line.find("imported but unused") != -1: |
- m = "unused" |
- elif line.find("*' used; unable to detect undefined names") != -1: |
- m = "import*" |
- elif line.find("undefined name") != -1: |
- m = "undefined" |
- elif line.find("redefinition of unused") != -1: |
- m = "redefs" |
- else: |
- m = "misc" |
- summaries[m].append(line) |
- counts[m] += 1 |
- |
- self.descriptionDone = self.descriptionDone[:] |
- for m in self.MESSAGES: |
- if counts[m]: |
- self.descriptionDone.append("%s=%d" % (m, counts[m])) |
- self.addCompleteLog(m, "".join(summaries[m])) |
- self.setProperty("pyflakes-%s" % m, counts[m], "pyflakes") |
- self.setProperty("pyflakes-total", sum(counts.values()), "pyflakes") |
- |
- |
- def evaluateCommand(self, cmd): |
- if cmd.rc != 0: |
- return FAILURE |
- for m in self.flunkingIssues: |
- if self.getProperty("pyflakes-%s" % m): |
- return FAILURE |
- if self.getProperty("pyflakes-total"): |
- return WARNINGS |
- return SUCCESS |
- |
-class PyLint(ShellCommand): |
- '''A command that knows about pylint output. |
- It's a good idea to add --output-format=parseable to your |
- command, since it includes the filename in the message. |
- ''' |
- name = "pylint" |
- description = ["running", "pylint"] |
- descriptionDone = ["pylint"] |
- |
- # Using the default text output, the message format is : |
- # MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE |
- # with --output-format=parseable it is: (the outer brackets are literal) |
- # FILE_NAME:LINE_NUM: [MESSAGE_TYPE[, OBJECT]] MESSAGE |
- # message type consists of the type char and 4 digits |
- # The message types: |
- |
- MESSAGES = { |
- 'C': "convention", # for programming standard violation |
- 'R': "refactor", # for bad code smell |
- 'W': "warning", # for python specific problems |
- 'E': "error", # for much probably bugs in the code |
- 'F': "fatal", # error prevented pylint from further processing. |
- 'I': "info", |
- } |
- |
- flunkingIssues = ["F", "E"] # msg categories that cause FAILURE |
- |
- _re_groupname = 'errtype' |
- _msgtypes_re_str = '(?P<%s>[%s])' % (_re_groupname, ''.join(MESSAGES.keys())) |
- _default_line_re = re.compile(r'%s\d{4}: *\d+:.+' % _msgtypes_re_str) |
- _parseable_line_re = re.compile(r'[^:]+:\d+: \[%s\d{4}[,\]] .+' % _msgtypes_re_str) |
- |
- def createSummary(self, log): |
- counts = {} |
- summaries = {} |
- for m in self.MESSAGES: |
- counts[m] = 0 |
- summaries[m] = [] |
- |
- line_re = None # decide after first match |
- for line in StringIO(log.getText()).readlines(): |
- if not line_re: |
- # need to test both and then decide on one |
- if self._parseable_line_re.match(line): |
- line_re = self._parseable_line_re |
- elif self._default_line_re.match(line): |
- line_re = self._default_line_re |
- else: # no match yet |
- continue |
- mo = line_re.match(line) |
- if mo: |
- msgtype = mo.group(self._re_groupname) |
- assert msgtype in self.MESSAGES |
- summaries[msgtype].append(line) |
- counts[msgtype] += 1 |
- |
- self.descriptionDone = self.descriptionDone[:] |
- for msg, fullmsg in self.MESSAGES.items(): |
- if counts[msg]: |
- self.descriptionDone.append("%s=%d" % (fullmsg, counts[msg])) |
- self.addCompleteLog(fullmsg, "".join(summaries[msg])) |
- self.setProperty("pylint-%s" % fullmsg, counts[msg]) |
- self.setProperty("pylint-total", sum(counts.values())) |
- |
- def evaluateCommand(self, cmd): |
- if cmd.rc != 0: |
- return FAILURE |
- for msg in self.flunkingIssues: |
- if self.getProperty("pylint-%s" % self.MESSAGES[msg]): |
- return FAILURE |
- if self.getProperty("pylint-total"): |
- return WARNINGS |
- return SUCCESS |
- |