| Index: third_party/buildbot_7_12/buildbot/process/step_twisted2.py
|
| diff --git a/third_party/buildbot_7_12/buildbot/process/step_twisted2.py b/third_party/buildbot_7_12/buildbot/process/step_twisted2.py
|
| deleted file mode 100644
|
| index b8fbe35d88ccd882baa523842affb744731ebe1d..0000000000000000000000000000000000000000
|
| --- a/third_party/buildbot_7_12/buildbot/process/step_twisted2.py
|
| +++ /dev/null
|
| @@ -1,152 +0,0 @@
|
| -
|
| -from buildbot.status import tests
|
| -from buildbot.process.step import SUCCESS, FAILURE, BuildStep
|
| -from buildbot.process.step_twisted import RunUnitTests
|
| -
|
| -from zope.interface import implements
|
| -from twisted.python import log, failure
|
| -from twisted.spread import jelly
|
| -from twisted.pb.tokens import BananaError
|
| -from twisted.web.html import PRE
|
| -from twisted.web.error import NoResource
|
| -
|
| -class Null: pass
|
| -ResultTypes = Null()
|
| -ResultTypeNames = ["SKIP",
|
| - "EXPECTED_FAILURE", "FAILURE", "ERROR",
|
| - "UNEXPECTED_SUCCESS", "SUCCESS"]
|
| -try:
|
| - from twisted.trial import reporter # introduced in Twisted-1.0.5
|
| - # extract the individual result types
|
| - for name in ResultTypeNames:
|
| - setattr(ResultTypes, name, getattr(reporter, name))
|
| -except ImportError:
|
| - from twisted.trial import unittest # Twisted-1.0.4 has them here
|
| - for name in ResultTypeNames:
|
| - setattr(ResultTypes, name, getattr(unittest, name))
|
| -
|
| -log._keepErrors = 0
|
| -from twisted.trial import remote # for trial/jelly parsing
|
| -
|
| -import StringIO
|
| -
|
| -class OneJellyTest(tests.OneTest):
|
| - def html(self, request):
|
| - tpl = "<HTML><BODY>\n\n%s\n\n</body></html>\n"
|
| - pptpl = "<HTML><BODY>\n\n<pre>%s</pre>\n\n</body></html>\n"
|
| - t = request.postpath[0] # one of 'short', 'long' #, or 'html'
|
| - if isinstance(self.results, failure.Failure):
|
| - # it would be nice to remove unittest functions from the
|
| - # traceback like unittest.format_exception() does.
|
| - if t == 'short':
|
| - s = StringIO.StringIO()
|
| - self.results.printTraceback(s)
|
| - return pptpl % PRE(s.getvalue())
|
| - elif t == 'long':
|
| - s = StringIO.StringIO()
|
| - self.results.printDetailedTraceback(s)
|
| - return pptpl % PRE(s.getvalue())
|
| - #elif t == 'html':
|
| - # return tpl % formatFailure(self.results)
|
| - # ACK! source lines aren't stored in the Failure, rather,
|
| - # formatFailure pulls them (by filename) from the local
|
| - # disk. Feh. Even printTraceback() won't work. Double feh.
|
| - return NoResource("No such mode '%s'" % t)
|
| - if self.results == None:
|
| - return tpl % "No results to show: test probably passed."
|
| - # maybe results are plain text?
|
| - return pptpl % PRE(self.results)
|
| -
|
| -class TwistedJellyTestResults(tests.TestResults):
|
| - oneTestClass = OneJellyTest
|
| - def describeOneTest(self, testname):
|
| - return "%s: %s\n" % (testname, self.tests[testname][0])
|
| -
|
| -class RunUnitTestsJelly(RunUnitTests):
|
| - """I run the unit tests with the --jelly option, which generates
|
| - machine-parseable results as the tests are run.
|
| - """
|
| - trialMode = "--jelly"
|
| - implements(remote.IRemoteReporter)
|
| -
|
| - ourtypes = { ResultTypes.SKIP: tests.SKIP,
|
| - ResultTypes.EXPECTED_FAILURE: tests.EXPECTED_FAILURE,
|
| - ResultTypes.FAILURE: tests.FAILURE,
|
| - ResultTypes.ERROR: tests.ERROR,
|
| - ResultTypes.UNEXPECTED_SUCCESS: tests.UNEXPECTED_SUCCESS,
|
| - ResultTypes.SUCCESS: tests.SUCCESS,
|
| - }
|
| -
|
| - def start(self):
|
| - self.decoder = remote.DecodeReport(self)
|
| - # don't accept anything unpleasant from the (untrusted) build slave
|
| - # The jellied stream may have Failures, but everything inside should
|
| - # be a string
|
| - security = jelly.SecurityOptions()
|
| - security.allowBasicTypes()
|
| - security.allowInstancesOf(failure.Failure)
|
| - self.decoder.taster = security
|
| - self.results = TwistedJellyTestResults()
|
| - RunUnitTests.start(self)
|
| -
|
| - def logProgress(self, progress):
|
| - # XXX: track number of tests
|
| - BuildStep.logProgress(self, progress)
|
| -
|
| - def addStdout(self, data):
|
| - if not self.decoder:
|
| - return
|
| - try:
|
| - self.decoder.dataReceived(data)
|
| - except BananaError:
|
| - self.decoder = None
|
| - log.msg("trial --jelly output unparseable, traceback follows")
|
| - log.deferr()
|
| -
|
| - def remote_start(self, expectedTests, times=None):
|
| - print "remote_start", expectedTests
|
| - def remote_reportImportError(self, name, aFailure, times=None):
|
| - pass
|
| - def remote_reportStart(self, testClass, method, times=None):
|
| - print "reportStart", testClass, method
|
| -
|
| - def remote_reportResults(self, testClass, method, resultType, results,
|
| - times=None):
|
| - print "reportResults", testClass, method, resultType
|
| - which = testClass + "." + method
|
| - self.results.addTest(which,
|
| - self.ourtypes.get(resultType, tests.UNKNOWN),
|
| - results)
|
| -
|
| - def finished(self, rc):
|
| - # give self.results to our Build object
|
| - self.build.testsFinished(self.results)
|
| - total = self.results.countTests()
|
| - count = self.results.countFailures()
|
| - result = SUCCESS
|
| - if total == None:
|
| - result = (FAILURE, ['tests%s' % self.rtext(' (%s)')])
|
| - if count:
|
| - result = (FAILURE, ["%d tes%s%s" % (count,
|
| - (count == 1 and 't' or 'ts'),
|
| - self.rtext(' (%s)'))])
|
| - return self.stepComplete(result)
|
| - def finishStatus(self, result):
|
| - total = self.results.countTests()
|
| - count = self.results.countFailures()
|
| - text = []
|
| - if count == 0:
|
| - text.extend(["%d %s" % \
|
| - (total,
|
| - total == 1 and "test" or "tests"),
|
| - "passed"])
|
| - else:
|
| - text.append("tests")
|
| - text.append("%d %s" % \
|
| - (count,
|
| - count == 1 and "failure" or "failures"))
|
| - self.updateCurrentActivity(text=text)
|
| - self.addFileToCurrentActivity("tests", self.results)
|
| - #self.finishStatusSummary()
|
| - self.finishCurrentActivity()
|
| -
|
|
|