buildbot waterfall does not render because testtools is missing Reproducible: Always Steps to Reproduce: installed buildbot 0.8.3_p1, and upon accessing /waterfall Actual Results: I got the following exception: web.Server Traceback (most recent call last): <type 'exceptions.ImportError'>: No module named testtools.testresult.real /usr/lib64/python2.6/site-packages/twisted/web/server.py, line 127 in process 125 try: 126 resrc = self.site.getResourceFor(self) 127 self.render(resrc) 128 except: Self site buildbot.status.web.baseweb.RotateLogSite instance @ 0x32c1170 <buildbot.status.web.baseweb.RotateLogSite instance at 0x32c1170> Locals resrc <buildbot.status.web.waterfall.WaterfallStatusResource object at 0x3259a50> self twisted.web.server.Request instance @ 0x32b4050 <GET /waterfall HTTP/1.1> /usr/lib64/python2.6/site-packages/twisted/web/server.py, line 147 in render 145 """ 146 try: 147 body = resrc.render(self) 148 except UnsupportedMethod, e: Locals resrc <buildbot.status.web.waterfall.WaterfallStatusResource object at 0x3259a50> self twisted.web.server.Request instance @ 0x32b4050 <GET /waterfall HTTP/1.1> Globals UnsupportedMethod <class 'twisted.web.error.UnsupportedMethod'> /usr/lib64/python2.6/site-packages/buildbot/status/web/base.py, line 274 in render 272 ctx = self.getContext(request) 273 274 data = self.content(request, ctx) 275 if isinstance(data, unicode): Locals ctx Dictionary instance @ 0x3419630 'authz' <buildbot.status.web.authz.Authz object at 0x3259a10> 'project_name' 'TP' 'tz' u'PDT' 'welcomeurl' '' 'path_to_root' '' 'title' 'BuildBot: TP' 'metatags' List instance @ 0x32bc8c0 'project_url' 'https://teampatent.com/trac' 'stylesheet' 'default.css' 'version' '0.8.3p1' 'refresh' None 'time' 'Sun 30 Oct 2011 10:46:12' self <buildbot.status.web.waterfall.WaterfallStatusResource object at 0x3259a50> request twisted.web.server.Request instance @ 0x32b4050 <GET /waterfall HTTP/1.1> /usr/lib64/python2.6/site-packages/buildbot/status/web/waterfall.py, line 401 in content 399 400 (changeNames, builderNames, timestamps, eventGrid, sourceEvents) = \ 401 self.buildGrid(request, builders) 402 Locals self <buildbot.status.web.waterfall.WaterfallStatusResource object at 0x3259a50> request twisted.web.server.Request instance @ 0x32b4050 <GET /waterfall HTTP/1.1> builders List instance @ 0x32e5cb0 buildbot.status.builder.BuilderStatus instance @ 0x32b2f80 <buildbot.status.builder.BuilderStatus instance at 0x32b2f80> buildbot.status.builder.BuilderStatus instance @ 0x32b9638 <buildbot.status.builder.BuilderStatus instance at 0x32b9638> buildbot.status.builder.BuilderStatus instance @ 0x32bc830 <buildbot.status.builder.BuilderStatus instance at 0x32bc830> buildbot.status.builder.BuilderStatus instance @ 0x32b43f8 <buildbot.status.builder.BuilderStatus instance at 0x32b43f8> buildbot.status.builder.BuilderStatus instance @ 0x32b03b0 <buildbot.status.builder.BuilderStatus instance at 0x32b03b0> /usr/lib64/python2.6/site-packages/buildbot/status/web/waterfall.py, line 540 in buildGrid 538 sourceGenerators.append(gen) 539 # get the first event 540 sourceEvents.append(get_event_from(gen)) 541 eventGrid = [] Locals sourceGenerators List instance @ 0x32e6320 <generator object insertGaps at 0x32d1af0> <generator object insertGaps at 0x32d1d20> <generator object insertGaps at 0x32d1b90> gen <generator object insertGaps at 0x32d1b90> sourceEvents List instance @ 0x32e6290 buildbot.changes.changes.Change instance @ 0x32ce050 <buildbot.changes.changes.Change instance at 0x32ce050> buildbot.status.web.waterfall.Spacer instance @ 0x32bc998 <buildbot.status.web.waterfall.Spacer instance at 0x32bc998> get_event_from function get_event_from in file /usr/lib64/python2.6/site-packages/buildbot/status/web/waterfall.py at line 512 /usr/lib64/python2.6/site-packages/buildbot/status/web/waterfall.py, line 515 in get_event_from 513 try: 514 while True: 515 e = g.next() 516 # e might be builder.BuildStepStatus, Locals g <generator object insertGaps at 0x32d1b90> Globals builder <module 'buildbot.status.builder' from '/usr/lib64/python2.6/site-packages/buildbot/status/builder.pyc'> /usr/lib64/python2.6/site-packages/buildbot/status/web/waterfall.py, line 229 in insertGaps 227 debug = False 228 229 e = g.next() 230 starts, finishes = e.getTimes() Locals debug False g <generator object eventGenerator at 0x32d1b40> /usr/lib64/python2.6/site-packages/buildbot/status/builder.py, line 1954 in eventGenerator 1952 e = self.getEvent(eventIndex) 1953 for Nb in range(1, self.nextBuildNumber+1): 1954 b = self.getBuild(-Nb) 1955 if not b: Self nextBuildNumber 2102 Locals e buildbot.status.builder.Event instance @ 0x331e128 <buildbot.status.builder.Event instance at 0x331e128> Nb 1 eventIndex -1 self buildbot.status.builder.BuilderStatus instance @ 0x32b9638 <buildbot.status.builder.BuilderStatus instance at 0x32b9638> /usr/lib64/python2.6/site-packages/buildbot/status/builder.py, line 1895 in getBuild 1893 1894 try: 1895 return self.getBuildByNumber(number) 1896 except IndexError: Locals self buildbot.status.builder.BuilderStatus instance @ 0x32b9638 <buildbot.status.builder.BuilderStatus instance at 0x32b9638> number 2101 /usr/lib64/python2.6/site-packages/buildbot/status/builder.py, line 1783 in getBuildByNumber 1781 log.msg("Loading builder %s's build %d from on-disk pickle" 1782 % (self.name, number)) 1783 build = load(open(filename, "rb")) 1784 build.builder = self Self name 'frontend' Locals self buildbot.status.builder.BuilderStatus instance @ 0x32b9638 <buildbot.status.builder.BuilderStatus instance at 0x32b9638> number 2101 filename '/var/lib/buildmaster/frontend/2101' Globals load <built-in function load> log <module 'twisted.python.log' from '/usr/lib64/python2.6/site-packages/twisted/python/log.pyc'> <type 'exceptions.ImportError'>: No module named testtools.testresult.real Expected Results: no error manually install testtools solves the problem
You are misinterpreting this output. Something else needs testtools. No dev-python/twisted* package needs testtools. $ grep testtools $(qlist dev-python/twisted) $
thanks for looking into this it's actually used by dev-python/subunit, and it's already listed as a run time dependency I have subunit installed, but testtools is not pulled in. I unmerged testtools, and re-emerge subunit, this time testtools is properly installed closing