1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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)
|