Removed unused code from zorg/buildbot/commands.
diff --git a/zorg/buildbot/commands/AnalyzerCompareCommand.py b/zorg/buildbot/commands/AnalyzerCompareCommand.py
deleted file mode 100644
index 5c83d68..0000000
--- a/zorg/buildbot/commands/AnalyzerCompareCommand.py
+++ /dev/null
@@ -1,109 +0,0 @@
-import sys
-import os
-
-from buildbot.steps import shell
-from buildbot.status import builder
-from buildbot.process import buildstep
-
-class AnalyzerCompareCommand(shell.ShellCommand):
- """Command suitable for displaying a comparison of two static analyzer
- runs, as output by the clang 'utils/analyzer/CmpRun' tool."""
-
- class Observer(buildstep.LogLineObserver):
- def __init__(self):
- buildstep.LogLineObserver.__init__(self)
-
- # Counts of various reports.
- self.num_reports = None
- self.num_added = 0
- self.num_removed = 0
- self.num_changed = 0
-
- # Reports to notify the user about; a list of tuples of (title,
- # name, html-report).
- self.reports = []
-
- # Lines we couldn't parse.
- self.invalid_lines = []
-
- # Make sure we get all the data.
- self.setMaxLineLength(sys.maxint)
-
- def outLineReceived(self, line):
- """This is called once with each line of the test log."""
-
- # Ignore empty lines.
- line = line.strip()
- if not line:
- return
-
- # Everything else should be eval()able.
- try:
- data = eval(line)
- key = data[0]
- except:
- self.invalid_lines.append(line)
- return
-
- # FIXME: Improve error checking.
- if key == 'ADDED':
- _,name,report = data
- self.num_added += 1
- self.reports.append(('added', str(name), str(report)))
- elif key == 'REMOVED':
- _,name,report = data
- self.num_removed += 1
- self.reports.append(('removed', str(name), str(report)))
- elif key == 'CHANGED':
- _,name,old_name,report,old_report = data
- self.num_removed += 1
- self.reports.append(('modified', str(name), str(report)))
- elif key == 'TOTAL':
- if self.num_reports is not None:
- self.invalid_lines.append(line)
- return
-
- _,count = data
- self.num_reports = count
- else:
- self.invalid_lines.append(line)
-
- def __init__(self, **kwargs):
- shell.ShellCommand.__init__(self, **kwargs)
- self.observer = AnalyzerCompareCommand.Observer()
- self.addLogObserver('comparison-data', self.observer)
-
- def getText(self, cmd, results):
- basic_info = self.describe(True)
-
- added = self.observer.num_added
- removed = self.observer.num_removed
- changed = self.observer.num_changed
- total = self.observer.num_reports
-
- if total is not None:
- basic_info.append('%d reports' % total)
- for name,count in (("added", self.observer.num_added),
- ("removed", self.observer.num_removed),
- ("changed", self.observer.num_changed)):
- if count:
- basic_info.append('%d %s' % (count, name))
-
- return basic_info
-
- def createSummary(self, log):
- # Add the "interesting" reports.
- for title,name,data in self.observer.reports:
- self.addHTMLLog("%s:%s" % (title, os.path.basename(name)), data)
-
- def evaluateCommand(self, cmd):
- # Always fail if the command itself failed.
- if cmd.rc != 0:
- return builder.FAILURE
-
- # Warn about added reports.
- if self.observer.num_added:
- return builder.WARNINGS
-
- return builder.SUCCESS
-
diff --git a/zorg/buildbot/commands/BatchFileDownload.py b/zorg/buildbot/commands/BatchFileDownload.py
deleted file mode 100644
index 933eb27..0000000
--- a/zorg/buildbot/commands/BatchFileDownload.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from buildbot.steps.transfer import FileDownload
-
-class BatchFileDownload(FileDownload):
- # FIXME: It would be nice to form a BatchedShellCommand step out of this.
- def __init__(self, **kwargs):
- if 'command' in kwargs:
- if 'mastersrc' in kwargs:
- raise ValueError,"Unexpected 'mastersrc' argument."
- if 'slavedest' in kwargs:
- raise ValueError,"Unexpected 'slavedest' argument."
-
- # This is the initial construction, create a temporary
- # batch file to run the command.
- import os
- import tempfile
-
- command = kwargs.pop('command')
- tf = tempfile.NamedTemporaryFile(delete=False)
- print >>tf, '@echo on'
- print >>tf, ' '.join('"%s"' % a for a in command)
- tf.close()
-
- remotename = kwargs.get('name', 'batched-command')
- kwargs['mastersrc'] = os.path.abspath(tf.name)
- kwargs['slavedest'] = '%s.bat' % remotename
-
- FileDownload.__init__(self, **kwargs)
diff --git a/zorg/buildbot/commands/DejaGNUCommand.py b/zorg/buildbot/commands/DejaGNUCommand.py
deleted file mode 100644
index f08cf08..0000000
--- a/zorg/buildbot/commands/DejaGNUCommand.py
+++ /dev/null
@@ -1,72 +0,0 @@
-import re
-import urllib
-import buildbot
-import buildbot.status.builder
-from buildbot.status.results import FAILURE, SUCCESS
-import buildbot.steps.shell
-from buildbot.process.buildstep import LogLineObserver
-from buildbot.steps.shell import Test
-
-class DejaGNULogObserver(LogLineObserver):
- kStartLineRE = re.compile(r'Running .*/(.*/.*\.exp) \.\.\.');
- kFinishLineRE = re.compile(r'testcase .*/(.*/.*\.exp) completed in .* seconds');
- kTestStateLineRE = re.compile(r'(FAIL|PASS|XFAIL|XPASS|KFAIL|KPASS|UNRESOLVED|UNTESTED|UNSUPPORTED): .*')
- failingCodes = set(['FAIL', 'XPASS', 'KPASS', 'UNRESOLVED'])
- def __init__(self):
- LogLineObserver.__init__(self)
- self.resultCounts = {}
- self.currentLines = ''
- self.currentFailed = False
- self.anyFailed = False
- def outLineReceived(self, line):
- if len(self.currentLines):
- self.currentLines += '\n' + line
- m = self.kTestStateLineRE.search(line)
- if m:
- resultCode, = m.groups()
- if resultCode in self.failingCodes:
- self.hasFailed = True
- self.currentFailed = True
- self.anyFailed = True
- if not resultCode in self.resultCounts:
- self.resultCounts[resultCode] = 0
- self.resultCounts[resultCode] += 1
- m = self.kFinishLineRE.match(line)
- if m:
- name, = m.groups()
- if self.currentFailed:
- self.step.addCompleteLog(name.replace('/', '__'), self.currentLines)
- self.currentLines = ''
- else:
- m = self.kStartLineRE.match(line)
- if m:
- self.currentLines = line
- self.currentFailed = False
-
-class DejaGNUCommand(Test):
- resultNames = {'FAIL':'unexpected failures',
- 'PASS':'expected passes',
- 'XFAIL':'expected failures',
- 'XPASS':'unexpected passes',
- 'KFAIL':'known failures',
- 'KPASS':'unknown passes',
- 'UNRESOLVED':'unresolved testcases',
- 'UNTESTED':'untested testcases',
- 'UNSUPPORTED':'unsupported tests'}
-
- def __init__(self, ignore=[], flaky=[], max_logs=20,
- *args, **kwargs):
- Test.__init__(self, *args, **kwargs)
- self.logObserver = DejaGNULogObserver()
- self.addLogObserver('gdb.log', self.logObserver)
-
- def evaluateCommand(self, cmd):
- if self.logObserver.anyFailed:
- return FAILURE
- return SUCCESS
-
- def describe(self, done=False):
- description = Test.describe(self, done)
- for name, count in self.logObserver.resultCounts.iteritems():
- description.append('{0} {1}'.format(count, self.resultNames[name]))
- return description
diff --git a/zorg/buildbot/commands/GTestCommand.py b/zorg/buildbot/commands/GTestCommand.py
deleted file mode 100644
index 84ea097..0000000
--- a/zorg/buildbot/commands/GTestCommand.py
+++ /dev/null
@@ -1,158 +0,0 @@
-#!/usr/bin/python
-# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE.chromium.TXT file.
-
-"""A buildbot command for running and interpreting GTest tests."""
-
-import re
-from buildbot.steps import shell
-from buildbot.status import builder
-from buildbot.process import buildstep
-
-class TestObserver(buildstep.LogLineObserver):
- """This class knows how to understand GTest test output."""
-
- def __init__(self):
- buildstep.LogLineObserver.__init__(self)
-
- # State tracking for log parsing
- self._current_test_case = ''
- self._current_test = ''
- self._current_failure = None
- self._suites_started = 0
- self._suites_ended = 0
-
- # This may be either text or a number. It will be used in the phrase
- # '%s disabled' on the waterfall display.
- self.disabled_tests = 0
-
- # Failures are stored here as 'test name': [failure description]
- self.failed_tests = {}
-
- # Regular expressions for parsing GTest logs
- self._test_case_start = re.compile('\[----------\] \d+ tests? from (\w+)')
- self._test_start = re.compile('^\[ RUN \] .+\.(\w+)')
- self._test_end = re.compile('^^\[( OK | FAILED )] .+\.(\w+)')
- self._disabled = re.compile(' YOU HAVE (\d+) DISABLED TEST')
- self._suite_start = re.compile(
- '^\[==========\] Running \d+ tests? from \d+ test cases?.')
- self._suite_end = re.compile(
- '^\[==========\] \d+ tests? from \d+ test cases? ran.')
-
- def RunningTests(self):
- """Returns True if we appear to be in the middle of running tests."""
- return self._suites_started > self._suites_ended
-
- def outLineReceived(self, line):
- """This is called once with each line of the test log."""
-
- # Is it the first line of the suite?
- results = self._suite_start.search(line)
- if results:
- self._suites_started += 1
- return
-
- # Is it a line reporting disabled tests?
- results = self._disabled.search(line)
- if results:
- try:
- disabled = int(results.group(1))
- except ValueError:
- disabled = 0
- if disabled > 0 and isinstance(self.disabled_tests, int):
- self.disabled_tests += disabled
- else:
- # If we can't parse the line, at least give a heads-up. This is a
- # safety net for a case that shouldn't happen but isn't a fatal error.
- self.disabled_tests = 'some'
- return
-
- # We don't care about anything else if we're not in the list of tests.
- if not self.RunningTests():
- return
-
- # Is it the first line in a test case?
- results = self._test_case_start.search(line)
- if results:
- self._current_test = ''
- self._failure_description = []
- self._current_test_case = results.group(1)
- return
-
- # Is it the last line of the suite (if so, clear state)?
- results = self._suite_end.search(line)
- if results:
- self._suites_ended += 1
- self._current_test_case = ''
- self._current_test = ''
- self._failure_description = []
- return
-
- # Is it the start of an individual test?
- results = self._test_start.search(line)
- if results:
- self._current_test = results.group(1)
- test_name = '.'.join([self._current_test_case, self._current_test])
- self._failure_description = ['%s:' % test_name]
- return
-
- # Is it a test result line?
- results = self._test_end.search(line)
- if results:
- if results.group(1) == ' FAILED ':
- test_name = '.'.join([self._current_test_case, self._current_test])
- self.failed_tests[test_name] = self._failure_description
- self._current_test = ''
- self._failure_description = []
-
- # Random line: if we're in a test, collect it for the failure description.
- if self._current_test:
- self._failure_description.append(line)
-
-
-class GTestCommand(shell.ShellCommand):
- """Buildbot command that knows how to display GTest output."""
-
- def __init__(self, **kwargs):
- shell.ShellCommand.__init__(self, **kwargs)
- self.test_observer = TestObserver()
- self.addLogObserver('stdio', self.test_observer)
-
- def getText(self, cmd, results):
- basic_info = self.describe(True)
- disabled = self.test_observer.disabled_tests
- if disabled:
- basic_info.append('%s disabled' % str(disabled))
-
- if results == builder.SUCCESS:
- return basic_info
- elif results == builder.WARNINGS:
- return basic_info + ['warnings']
-
- if self.test_observer.RunningTests():
- basic_info += ['did not complete']
-
- if len(self.test_observer.failed_tests) > 0:
- failure_text = ['failed %d' % len(self.test_observer.failed_tests)]
- else:
- failure_text = ['crashed or hung']
- return basic_info + failure_text
-
- def _TestAbbrFromTestID(self, id):
- """Split the test's individual name from GTest's full identifier.
- The name is assumed to be everything after the final '.', if any.
- """
- return id.split('.')[-1]
-
- def createSummary(self, log):
- observer = self.test_observer
- if observer.failed_tests:
- for failure in observer.failed_tests:
- # GTest test identifiers are of the form TestCase.TestName. We display
- # the test names only. Unfortunately, addCompleteLog uses the name as
- # both link text and part of the text file name, so we can't incude
- # HTML tags such as <abbr> in it.
- self.addCompleteLog(self._TestAbbrFromTestID(failure),
- '\n'.join(observer.failed_tests[failure]))
-
diff --git a/zorg/buildbot/commands/LICENSE.chromium.TXT b/zorg/buildbot/commands/LICENSE.chromium.TXT
deleted file mode 100644
index 9314092..0000000
--- a/zorg/buildbot/commands/LICENSE.chromium.TXT
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/zorg/buildbot/commands/MakeCommand.py b/zorg/buildbot/commands/MakeCommand.py
deleted file mode 100644
index 623a1b0..0000000
--- a/zorg/buildbot/commands/MakeCommand.py
+++ /dev/null
@@ -1,82 +0,0 @@
-import re
-
-from buildbot.process.properties import WithProperties
-from buildbot.steps.shell import WarningCountingShellCommand
-
-class MakeCommand(WarningCountingShellCommand):
-
- @staticmethod
- def sanitize_kwargs(kwargs):
- # kwargs we could get and must not pass through
- # to the buildstep.RemoteShellCommand constructor.
- # Note: This is a workaround of the buildbot design issue,
- # thus should be removed once the original issue gets fixed.
- consume_kwargs = [
- "jobs",
- ]
-
- sanitized_kwargs = kwargs.copy()
- for k in consume_kwargs:
- if k in sanitized_kwargs.keys():
- del sanitized_kwargs[k]
-
- return sanitized_kwargs
-
-
- def __init__(self, prefixCommand=None, options=None, targets=None, **kwargs):
- self.prefixCommand = prefixCommand
- self.targets = targets
-
- command = []
- if prefixCommand:
- command += prefixCommand
-
- command += ["make"]
-
- if options is None:
- self.options = list()
- else:
- self.options = list(options)
-
- j_opt = re.compile(r'^-j$|^-j\d+$')
-
- # We can get jobs in the options. If so, we would use that.
- if not any(j_opt.search(opt) for opt in self.options if isinstance(opt, basestring)):
- # Otherwise let's see if we got it in the kwargs.
- if kwargs.get('jobs', None):
- self.options += ["-j", kwargs['jobs']]
- else:
- # Use the property if option was not explicitly
- # specified.
- command += [
- WithProperties("%(jobs:+-j)s"),
- WithProperties("%(jobs:-)s"),
- ]
-
- if self.options:
- command += self.options
-
- if targets:
- command += targets
-
- # Remove here all the kwargs any of our LLVM buildbot command could consume.
- # Note: We will remove all the empty items from the command at start, as we
- # still didn't get yet WithProperties rendered.
- sanitized_kwargs = self.sanitize_kwargs(kwargs)
-
- sanitized_kwargs["command"] = command
-
- # And upcall to let the base class do its work
- WarningCountingShellCommand.__init__(self, **sanitized_kwargs)
-
- self.addFactoryArguments(prefixCommand=prefixCommand,
- options=self.options,
- targets=targets)
-
-
- def start(self):
- # Don't forget to remove all the empty items from the command,
- # which we could get because of WithProperties rendered as empty strings.
- self.command = filter(bool, self.command)
- # Then upcall.
- WarningCountingShellCommand.start(self)
diff --git a/zorg/buildbot/commands/NightlyTestCommand.py b/zorg/buildbot/commands/NightlyTestCommand.py
deleted file mode 100644
index 7279776..0000000
--- a/zorg/buildbot/commands/NightlyTestCommand.py
+++ /dev/null
@@ -1,86 +0,0 @@
-import itertools
-import re
-import os
-
-import buildbot
-import buildbot.steps.shell
-
-class NightlyTestCommand(buildbot.steps.shell.Test):
-
- def __init__(self, xfails=[], *args, **kwargs):
- buildbot.steps.shell.Test.__init__(self, *args, **kwargs)
-
- self.expectedFailures = set(xfails)
- self.addFactoryArguments(xfails=list(xfails))
-
- def evaluateCommand(self, cmd):
- # Always fail if the command itself failed.
- #
- # Disabled for now, nightlytest is so broken.
- #if cmd.rc != 0:
- # return buildbot.status.builder.FAILURE
-
- failures = {}
- xfailures = {}
- xpasses = {}
- num_passes = 0
- num_tests = 0
- for item in parse_report(self.getLog('report').readlines()):
- name = item.pop('Program')
- for key,value in item.items():
- if '/' in key:
- continue
- kname = '%s.%s' % (key,name)
- if value == '*':
- if kname in self.expectedFailures:
- xfailures[key] = xfailures.get(key,[])
- xfailures[key].append(kname)
- else:
- failures[key] = failures.get(key,[])
- failures[key].append(kname)
- else:
- if kname in self.expectedFailures:
- xpasses[key] = xpasses.get(key,[])
- xpasses[key].append(kname)
- else:
- num_passes += 1
- num_tests += 1
-
- num_fails = num_xfails = num_xpasses = 0
- for type,items in failures.items():
- if len(items) == num_tests: # Assume these are disabled.
- continue
- self.addCompleteLog('fail.%s' % type, '\n'.join(items) + '\n')
- num_fails += len(items)
- for type,items in xfailures.items():
- self.addCompleteLog('xfail.%s' % type, '\n'.join(items) + '\n')
- num_xfails += len(items)
- for type,items in xpasses.items():
- self.addCompleteLog('xpass.%s' % type, '\n'.join(items) + '\n')
- num_xpasses += len(items)
-
- self.setTestResults(total=(num_passes + num_fails + num_xfails +
- num_xpasses),
- failed=num_fails,
- passed=num_passes + num_xpasses,
- warnings=num_xfails + num_xpasses)
- if num_fails:
- return buildbot.status.builder.FAILURE
- return buildbot.status.builder.SUCCESS
-
-def parse_report(lines):
- def split_row(ln):
- return ln.split()
-
- header = None
- for ln in lines:
- if not ln.strip():
- continue
-
- if header is None:
- ln = ln.replace(' compile', '_compile')
- ln = ln.replace(' codegen', '_codegen')
- header = split_row(ln)
- else:
- row = split_row(ln)
- yield dict(zip(header, split_row(ln)))
diff --git a/zorg/buildbot/commands/StandardizedTest.py b/zorg/buildbot/commands/StandardizedTest.py
deleted file mode 100644
index fba70b6..0000000
--- a/zorg/buildbot/commands/StandardizedTest.py
+++ /dev/null
@@ -1,122 +0,0 @@
-import re
-import urllib
-import buildbot
-import buildbot.status.builder
-import buildbot.steps.shell
-
-class StandardizedTest(buildbot.steps.shell.Test):
- # FIXME: We should process things in a test observer instead of at the end.
-
- knownCodes = ['FAIL', 'XFAIL', 'PASS', 'XPASS',
- 'UNRESOLVED', 'UNSUPPORTED', 'IMPROVED', 'REGRESSED']
- failingCodes = set(['FAIL', 'XPASS', 'UNRESOLVED'])
- warningCodes = set(['IGNORE PASS', 'IGNORE XFAIL', 'REGRESSED'])
-
- # The list of all possible codes, including flaky and ignored codes. This is
- # the display order, as well.
- allKnownCodes = (knownCodes + ['IGNORE ' + c for c in knownCodes] +
- ['FLAKY ' + c for c in knownCodes])
-
- testLogName = 'stdio'
-
- def __init__(self, ignore=[], flaky=[], max_logs=20,
- *args, **kwargs):
- buildbot.steps.shell.Test.__init__(self, *args, **kwargs)
-
- self.flakyTests = set(flaky)
- self.ignoredTests = set(ignore)
- self.maxLogs = int(max_logs)
- self.addFactoryArguments(flaky=list(flaky))
- self.addFactoryArguments(ignore=list(ignore))
- self.addFactoryArguments(max_logs=max_logs)
-
- def parseLog(self, log_lines):
- """parseLog(log_lines) -> [(result_code, test_name, test_log), ...]"""
- raise RuntimeError("Abstract method.")
-
- def evaluateCommand(self, cmd):
- results_by_code = {}
- logs = []
- lines = self.getLog(self.testLogName).readlines()
- hasIgnored = False
- for result,test,log in self.parseLog(lines):
- test = test.strip()
- if result not in self.allKnownCodes:
- raise ValueError,'test command return invalid result code!'
-
- # Convert codes for flaky and ignored tests.
- if test in self.flakyTests:
- result = 'FLAKY ' + result
- elif test in self.ignoredTests:
- result = 'IGNORE ' + result
-
- if result.startswith('FLAKY ') or result.startswith('IGNORE '):
- hasIgnored = True
-
-
- results_by_code.setdefault(result, []).append(test)
-
- # Add logs for failures.
- if result in self.failingCodes and len(logs) < self.maxLogs:
- if log is not None and log.strip():
- # Buildbot 0.8 doesn't properly quote slashes, replace them.
- test = test.replace("/", "___")
- logs.append((test, log))
-
- # Explicitly remove any ignored warnings for tests which are
- # also in the an ignored failing set (some tests may appear
- # twice).
- ignored_failures = set()
- for code in self.failingCodes:
- results = results_by_code.get('IGNORE ' + code)
- if results:
- ignored_failures |= set(results)
- for code in self.warningCodes:
- results = results_by_code.get(code)
- if results:
- results_by_code[code] = [x for x in results_by_code[code]
- if x not in ignored_failures]
-
- # Summarize result counts.
- total = failed = passed = warnings = 0
- for code in self.allKnownCodes:
- results = results_by_code.get(code)
- if not results:
- continue
-
- total += len(results)
- if code in self.failingCodes:
- failed += len(results)
- elif code in self.warningCodes:
- warnings += len(results)
- else:
- passed += len(results)
-
- # Add a list of the tests in each category, for everything except
- # PASS.
- if code != 'PASS':
- results.sort()
- self.addCompleteLog('tests.%s' % code,
- '\n'.join(results) + '\n')
-
- self.setTestResults(total=total, failed=failed,
- passed=passed, warnings=warnings)
-
- # Add the logs.
- logs.sort()
- for test, log in logs:
- self.addCompleteLog(test, log)
-
- # Always fail if the command itself failed, unless we have ignored some
- # test results (which presumably would have caused the actual test
- # runner to fail).
- if not hasIgnored and cmd.rc != 0:
- return buildbot.status.builder.FAILURE
-
- # Report failure/warnings beased on the test status.
- if failed:
- return buildbot.status.builder.FAILURE
- if warnings:
- return buildbot.status.builder.WARNINGS
-
- return buildbot.status.builder.SUCCESS
diff --git a/zorg/buildbot/commands/SuppressionDejaGNUCommand.py b/zorg/buildbot/commands/SuppressionDejaGNUCommand.py
deleted file mode 100644
index 22fd830..0000000
--- a/zorg/buildbot/commands/SuppressionDejaGNUCommand.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import re
-import StandardizedTest
-
-class SuppressionDejaGNUCommand(StandardizedTest.StandardizedTest):
- kRunningRE = re.compile(r'Running (.*) ...')
- kRunningRE = re.compile(r'Running (.*) ...')
- kTestStateLineRE = re.compile(r'(FAIL|PASS|XFAIL|XPASS|UNRESOLVED): (.*)')
-
- testLogName = 'dg.sum'
-
- def parseLog(self, lines):
- results = []
-
- test_suite = None
- for ln in lines:
- m = self.kRunningRE.match(ln)
- if m is not None:
- test_suite, = m.groups()
- continue
-
- m = self.kTestStateLineRE.match(ln)
- if m is not None:
- code,name = m.groups()
- results.append((code, name, None))
- continue
-
- return results
-
-if __name__ == '__main__':
- import sys
- t = SuppressionDejaGNUCommand()
- for res in t.parseLog(open(sys.argv[1]).readlines()):
- print res