Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/buildbot/buildbot/process/process_twisted.py
diff options
context:
space:
mode:
Diffstat (limited to 'buildbot/buildbot/process/process_twisted.py')
-rw-r--r--buildbot/buildbot/process/process_twisted.py118
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)