diff options
Diffstat (limited to 'buildbot/buildbot/process/process_twisted.py')
-rw-r--r-- | buildbot/buildbot/process/process_twisted.py | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/buildbot/buildbot/process/process_twisted.py b/buildbot/buildbot/process/process_twisted.py new file mode 100644 index 0000000..36d6fc5 --- /dev/null +++ b/buildbot/buildbot/process/process_twisted.py @@ -0,0 +1,118 @@ + +# Build classes specific to the Twisted codebase + +from buildbot.process.base import Build +from buildbot.process.factory import BuildFactory +from buildbot.steps import shell +from buildbot.steps.python_twisted import HLint, ProcessDocs, BuildDebs, \ + Trial, RemovePYCs + +class TwistedBuild(Build): + workdir = "Twisted" # twisted's bin/trial expects to live in here + def isFileImportant(self, filename): + if filename.startswith("doc/fun/"): + return 0 + if filename.startswith("sandbox/"): + return 0 + return 1 + +class TwistedTrial(Trial): + tests = "twisted" + # the Trial in Twisted >=2.1.0 has --recurse on by default, and -to + # turned into --reporter=bwverbose . + recurse = False + trialMode = ["--reporter=bwverbose"] + testpath = None + trial = "./bin/trial" + +class TwistedBaseFactory(BuildFactory): + buildClass = TwistedBuild + # bin/trial expects its parent directory to be named "Twisted": it uses + # this to add the local tree to PYTHONPATH during tests + workdir = "Twisted" + + def __init__(self, source): + BuildFactory.__init__(self, [source]) + +class QuickTwistedBuildFactory(TwistedBaseFactory): + treeStableTimer = 30 + useProgress = 0 + + def __init__(self, source, python="python"): + TwistedBaseFactory.__init__(self, source) + if type(python) is str: + python = [python] + self.addStep(HLint, python=python[0]) + self.addStep(RemovePYCs) + for p in python: + cmd = [p, "setup.py", "build_ext", "-i"] + self.addStep(shell.Compile, command=cmd, flunkOnFailure=True) + self.addStep(TwistedTrial, python=p, testChanges=True) + +class FullTwistedBuildFactory(TwistedBaseFactory): + treeStableTimer = 5*60 + + def __init__(self, source, python="python", + processDocs=False, runTestsRandomly=False, + compileOpts=[], compileOpts2=[]): + TwistedBaseFactory.__init__(self, source) + if processDocs: + self.addStep(ProcessDocs) + + if type(python) == str: + python = [python] + assert isinstance(compileOpts, list) + assert isinstance(compileOpts2, list) + cmd = (python + compileOpts + ["setup.py", "build_ext"] + + compileOpts2 + ["-i"]) + + self.addStep(shell.Compile, command=cmd, flunkOnFailure=True) + self.addStep(RemovePYCs) + self.addStep(TwistedTrial, python=python, randomly=runTestsRandomly) + +class TwistedDebsBuildFactory(TwistedBaseFactory): + treeStableTimer = 10*60 + + def __init__(self, source, python="python"): + TwistedBaseFactory.__init__(self, source) + self.addStep(ProcessDocs, haltOnFailure=True) + self.addStep(BuildDebs, warnOnWarnings=True) + +class TwistedReactorsBuildFactory(TwistedBaseFactory): + treeStableTimer = 5*60 + + def __init__(self, source, + python="python", compileOpts=[], compileOpts2=[], + reactors=None): + TwistedBaseFactory.__init__(self, source) + + if type(python) == str: + python = [python] + assert isinstance(compileOpts, list) + assert isinstance(compileOpts2, list) + cmd = (python + compileOpts + ["setup.py", "build_ext"] + + compileOpts2 + ["-i"]) + + self.addStep(shell.Compile, command=cmd, warnOnFailure=True) + + if reactors == None: + reactors = [ + 'gtk2', + 'gtk', + #'kqueue', + 'poll', + 'c', + 'qt', + #'win32', + ] + for reactor in reactors: + flunkOnFailure = 1 + warnOnFailure = 0 + #if reactor in ['c', 'qt', 'win32']: + # # these are buggy, so tolerate failures for now + # flunkOnFailure = 0 + # warnOnFailure = 1 + self.addStep(RemovePYCs) # TODO: why? + self.addStep(TwistedTrial, name=reactor, python=python, + reactor=reactor, flunkOnFailure=flunkOnFailure, + warnOnFailure=warnOnFailure) |