Author: David Schneider <david.schnei...@picle.org>
Branch: buildbot-0.8.7
Changeset: r837:2bb9286ac8b1
Date: 2013-08-28 21:04 +0200
http://bitbucket.org/pypy/buildbot/changeset/2bb9286ac8b1/

Log:    update summary and fix tests

diff --git a/bot2/pypybuildbot/summary.py b/bot2/pypybuildbot/summary.py
--- a/bot2/pypybuildbot/summary.py
+++ b/bot2/pypybuildbot/summary.py
@@ -661,8 +661,7 @@
 
     def getTitle(self, request):
         status = self.getStatus(request)
-        return "%s: summaries of last %d revisions" % (status.getProjectName(),
-                                                       N)
+        return "%s: summaries of last %d revisions" % (status.getTitle(), N)
 
     @staticmethod
     def _prune_runs(runs, cutnum):
@@ -686,8 +685,10 @@
         except KeyError:
             pass
         builder = status.botmaster.builders[builderName]
+        factory = builder.config.factory
         branch = None
-        for _, kw in builder.buildFactory.steps:
+        for step in factory.steps:
+            kw = step.kwargs
             if 'defaultBranch' in kw:
                 if kw.get('explicitBranch'):
                     branch = kw['defaultBranch']
@@ -722,7 +723,6 @@
                          only_builder or only_branches)
 
         cat_branches = {}
-
         for builderName in status.getBuilderNames(only_categories):
             if not test_builder(builderName):
                 continue
diff --git a/bot2/pypybuildbot/test/test_summary.py 
b/bot2/pypybuildbot/test/test_summary.py
--- a/bot2/pypybuildbot/test/test_summary.py
+++ b/bot2/pypybuildbot/test/test_summary.py
@@ -27,7 +27,7 @@
 s a/b.py:test_three
 S a/c.py:test_four
 """)
-        
+
         rev_outcome_set.populate(log)
 
         assert rev_outcome_set.skipped == set([("a.b","test_three"),
@@ -67,7 +67,7 @@
 x a/c.py:test_nine
 x a/c.py:test_ten
 """)
-        
+
         rev_outcome_set.populate(log)
         sum = rev_outcome_set.get_summary()
         assert sum.p == 1
@@ -80,7 +80,7 @@
         rev_outcome_set = summary.RevisionOutcomeSet('0')
         log = StringIO("")
         rev_outcome_set.populate(log)
-        
+
     def test_populate_longrepr(self):
         rev_outcome_set = summary.RevisionOutcomeSet('50000')
         log = StringIO("""F a/b.py:test_one
@@ -90,7 +90,7 @@
 s a/b.py:test_three
  some skip
 """)
-        
+
         rev_outcome_set.populate(log)
 
         assert len(rev_outcome_set.skipped) == 1
@@ -115,7 +115,7 @@
 F a/b.py:test_two
  \xc3\xa5 bar
 """)
-        
+
         rev_outcome_set.populate(log)
 
         assert len(rev_outcome_set.failed) == 2
@@ -133,7 +133,7 @@
 ! <run>
 ! /a/b/c.py:92
 """)
-        
+
         rev_outcome_set.populate(log)
 
         assert rev_outcome_set.failed == set([
@@ -151,12 +151,12 @@
         log = StringIO("""x a/b.py
  EXC
 """)
-        
+
         rev_outcome_set.populate(log)
 
         assert rev_outcome_set.numxfailed == 1
-  
-        
+
+
     def test_absent_outcome(self):
         rev_outcome_set = summary.RevisionOutcomeSet('50000')
 
@@ -169,7 +169,7 @@
         def load(x, y):
             calls.append(y)
             return y
-        
+
         cache._load_outcome_set = load
 
         res = cache.get('status', 'a')
@@ -183,14 +183,14 @@
         cache.get('status', 'b')
         res = cache.get('status', 'c')
         assert res == 'c'
-        
+
         assert calls == ['a', 'b', 'c']
 
         calls = []
         res = cache.get('status', 'd')
         assert res == 'd'
         assert cache.get('status', 'c') == 'c'
-        assert cache.get('status', 'b') == 'b'        
+        assert cache.get('status', 'b') == 'b'
         assert calls == ['d']
 
         res = cache.get('status', 'a')
@@ -208,18 +208,18 @@
 s a/b.py:test_three
 x a/b.py:test_four
 """)
-        
+
         rev_outcome_set_foo.populate(log)
 
 
-        key_bar = ('bar', 7)        
+        key_bar = ('bar', 7)
         rev_outcome_set_bar = summary.RevisionOutcomeSet('50000',
                                                          key_bar)
         log = StringIO(""". a/b.py:test_one
 . a/b.py:test_two
 s a/b.py:test_three
 """)
-        
+
         rev_outcome_set_bar.populate(log)
 
         d = {'foo': rev_outcome_set_foo,
@@ -228,7 +228,7 @@
         goutcome = summary.GatherOutcomeSet(d)
 
         assert goutcome.revision == '50000'
-        
+
         assert goutcome.failed == set([('foo', 'a.b', 'test_one')])
 
         assert goutcome.skipped == set([('foo', 'a.b', 'test_three'),
@@ -273,14 +273,14 @@
         assert res == ' '
 
         res = goutcome_top.get_longrepr(('what', 'foo', 'a.b', 'test_one'))
-        assert res == ''        
+        assert res == ''
 
 def test_colsizes():
     failed = [('a', 'abc', 'd'), ('ab', 'c', 'xy'),
               ('ab', '', 'cd')]
-    
+
     res = summary.colsizes(failed)
-    
+
     assert res == [2,3,2]
 
 def test__prune_runs():
@@ -330,15 +330,15 @@
     res = summary.show_elapsed(0.25)
     assert res == "0.25s"
     res = summary.show_elapsed(1.0)
-    assert res == "1.00s"           
+    assert res == "1.00s"
     res = summary.show_elapsed(1.25)
-    assert res == "1.25s"   
+    assert res == "1.25s"
     res = summary.show_elapsed(4.5)
     assert res == "4.50s"
     res = summary.show_elapsed(5.25)
     assert res == "5s"
     res = summary.show_elapsed(5.5)
-    assert res == "6s"            
+    assert res == "6s"
     res = summary.show_elapsed(2*60+30)
     assert res == "2m30"
     res = summary.show_elapsed(4*60+30)
@@ -348,22 +348,33 @@
     res = summary.show_elapsed(61*60)
     assert res == "1h1"
     res = summary.show_elapsed(90*60)
-    assert res == "1h30"                
+    assert res == "1h30"
 
-def _BuilderToStatus(status):
 
-    setup = {'name': 'builder', 'builddir': 'BUILDDIR',
-             'slavebuilddir': 'SLAVEBUILDDIR',
-             'factory': process_factory.BuildFactory() }
-    return process_builder.Builder(setup, status)
+class FakeMasterConfig(object):
+    buildbotURL = "http://buildbot/";
+    logCompressionLimit = 0
+    def __init__(self, builders=None):
+        self.builders = builders
+
+
+class FakeBuilderconfig(object):
+    validNames = 'name factory slavenames builddir slavebuilddir category ' \
+                 'nextSlave nextBuild canStartBuild locks env properties ' \
+                 'mergeRequests description'.split()
+
+    def __init__(self, **kwargs):
+        for kw, item in kwargs.iteritems():
+            assert kw in self.validNames
+            setattr(self, kw, item)
 
 
 class FakeMaster(object):
     basedir = None
-    buildbotURL = "http://buildbot/";
 
     def __init__(self, builders):
         self.botmaster = FakeBotMaster(builders)
+        self.config = FakeMasterConfig()
 
     def subscribeToBuildsetCompletions(self, callback):
         pass
@@ -374,6 +385,7 @@
     def subscribeToBuildRequests(self, callback):
         pass
 
+
 class FakeBotMaster(object):
 
     def __init__(self, builders):
@@ -384,28 +396,39 @@
             self.builderNames.append(name)
             self.builders[name] = _BuilderToStatus(builder)
 
+
 class FakeSite(object):
 
     def __init__(self, status):
         self.buildbot_service = FakeService(status)
 
+
 class FakeService(object):
-    
+
     def __init__(self, status):
         self.status = status
 
     def getStatus(self):
         return self.status
 
+
 class FakeRequest(object):
 
     def __init__(self, builders, args={}):
         master = FakeMaster(builders)
-        status = status_builder.Status(master, builders)
+        status = status_builder.Status(master)
         self.args = args
         self.site = FakeSite(status)
 
 
+def _BuilderToStatus(status):
+    builder = process_builder.Builder(status.name)
+    builder.builder_status = status
+    builder.builder_status.basedir = 'BASEDIR'
+    builder.config = FakeBuilderconfig(factory=process_factory.BuildFactory())
+    return builder
+
+
 def witness_cat_branch(summary):
     ref = [None]
     recentRuns = summary.recentRuns
@@ -414,7 +437,6 @@
         ref[0] = cat_branch
         return cat_branch
     summary.recentRuns = witness
-
     return lambda: ref[0]
 
 class FakeLog(object):
@@ -424,7 +446,7 @@
         self.step = step
         self.name = name
         self.cont = cont
-        
+
     def getStep(self):
         return self.step
 
@@ -453,11 +475,12 @@
         step.started = t
         step.finished = t + (n+1)*60
         t = step.finished + 30
+        builder.buildCache.cache[build.number] = build
+        builder.buildStarted(build)
         build.buildFinished()
-        builder.touchBuildCache(build)
         n += 1
     builder.nextBuildNumber = n
-        
+
 
 class TestSummary(object):
 
@@ -475,15 +498,14 @@
         assert cat_branch == {}
 
     def test_one_build_no_rev(self):
-        builder = status_builder.BuilderStatus('builder0', '', self.master)
+        builder = status_builder.BuilderStatus('builder0', None, self.master, 
'')
         build = status_builder.BuildStatus(builder, self.master, 0)
-        builder.buildStarted(build)
+        build.buildStarted(builder)
         build.buildFinished()
-        builder.touchBuildCache(build)
-        builder.nextBuildNumber = len(builder.buildCache)
+        builder.nextBuildNumber = len(builder.buildCache.cache)
 
         s = summary.Summary()
-        res = witness_cat_branch(s)        
+        res = witness_cat_branch(s)
         req = FakeRequest([builder])
         out = s.body(req)
         cat_branch = res()
@@ -491,58 +513,58 @@
         assert cat_branch == {(None, None): ({}, [build])}
 
     def test_one_build_no_logs(self):
-        builder = status_builder.BuilderStatus('builder0', '', self.master)
-        build = status_builder.BuildStatus(None, builder, 0)
-        build.started = time.time()        
+        builder = status_builder.BuilderStatus('builder0', None, self.master, 
'')
+        build = status_builder.BuildStatus(builder, self.master, 0)
+        build.started = time.time()
         build.setProperty('got_revision', '50000', None)
         build.buildFinished()
-        builder.touchBuildCache(build)
-        builder.nextBuildNumber = len(builder.buildCache)
+        builder.buildCache.cache[build.number] = build
+        builder.nextBuildNumber = len(builder.buildCache.cache)
 
         s = summary.Summary()
-        res = witness_cat_branch(s)        
+        res = witness_cat_branch(s)
         req = FakeRequest([builder])
         out = s.body(req)
         cat_branch = res()
-        
+
         revs = cat_branch[(None, None)][0]
         assert revs.keys() == ['50000']
 
-        assert '&lt;run&gt;' in out
+        assert 'success' in out
 
     def test_one_build_no_logs_failure(self):
-        builder = status_builder.BuilderStatus('builder0', '', self.master)
-        build = status_builder.BuildStatus(builder, 0)
-        build.started = time.time()        
+        builder = status_builder.BuilderStatus('builder0', None, self.master, 
'')
+        build = status_builder.BuildStatus(builder, self.master, 0)
+        build.started = time.time()
         build.setProperty('got_revision', '50000', None)
         step = build.addStepWithName('step')
         step.setText(['step', 'borken'])
         step.stepFinished(summary.FAILURE)
         step1 = build.addStepWithName('other')
         step1.setText(['other', 'borken'])
-        step1.stepFinished(summary.FAILURE)        
+        step1.stepFinished(summary.FAILURE)
         build.buildFinished()
-        builder.touchBuildCache(build)
-        builder.nextBuildNumber = len(builder.buildCache)
+        builder.buildCache.cache[build.number] = build
+        builder.nextBuildNumber = len(builder.buildCache.cache)
 
         s = summary.Summary()
-        res = witness_cat_branch(s)        
+        res = witness_cat_branch(s)
         req = FakeRequest([builder])
         out = s.body(req)
         cat_branch = res()
-        
+
         revs = cat_branch[(None, None)][0]
         assert revs.keys() == ['50000']
 
         assert 'step borken' in out
-        assert 'other borken' not in out        
-        
+        assert 'other borken' not in out
+
     def test_one_build(self):
-        builder = status_builder.BuilderStatus('builder0', '', self.master)
+        builder = status_builder.BuilderStatus('builder0', None, self.master, 
'')
         add_builds(builder, [(60000, "F TEST1\n. b")])
 
         s = summary.Summary()
-        res = witness_cat_branch(s)        
+        res = witness_cat_branch(s)
         req = FakeRequest([builder])
         out = s.body(req)
         cat_branch = res()
@@ -556,12 +578,12 @@
         assert 'TEST1' in out
 
     def test_two_builds(self):
-        builder = status_builder.BuilderStatus('builder0', '', self.master)
+        builder = status_builder.BuilderStatus('builder0', None, self.master, 
'')
         add_builds(builder, [('60000', "F TEST1\n. b"),
                              ('60001', ". TEST1\n. b")])
 
         s = summary.Summary()
-        res = witness_cat_branch(s)        
+        res = witness_cat_branch(s)
         req = FakeRequest([builder])
         out = s.body(req)
         cat_branch = res()
@@ -583,15 +605,16 @@
 
         assert 'TEST1' in out
         assert ':-)' in out
-        assert '\n <a class="failSummary failed" 
href="javascript:togglestate(1,1)" id="a1c1">-</a> <span class="failSummary 
success">+</span>  success' in out
-
+        assert re.search(r'\n <a class="failSummary failed" href="javascript:'
+                         r'togglestate\((\d+),(\d+)\)" id="a\1c\2">-</a> '
+                         r'<span class="failSummary success">\+</span>  
success', out) is not None
     def test_two_builds_samerev(self):
-        builder = status_builder.BuilderStatus('builder0', '', self.master)
+        builder = status_builder.BuilderStatus('builder0', None, self.master, 
'')
         add_builds(builder, [('60000', "F TEST1\n. b"),
-                             ('60000', "F TEST1\n. b")])        
+                             ('60000', "F TEST1\n. b")])
 
         s = summary.Summary()
-        res = witness_cat_branch(s)        
+        res = witness_cat_branch(s)
         req = FakeRequest([builder])
         out = s.body(req)
         cat_branch = res()
@@ -605,12 +628,12 @@
         assert 'TEST1' in out
 
     def test_two_builds_recentrev(self):
-        builder = status_builder.BuilderStatus('builder0', '', self.master)
+        builder = status_builder.BuilderStatus('builder0', None, self.master, 
'')
         add_builds(builder, [('60000', "F TEST1\n. b"),
                              ('60001', "F TEST1\n. b")])
 
         s = summary.Summary()
-        res = witness_cat_branch(s)        
+        res = witness_cat_branch(s)
         req = FakeRequest([builder])
         req.args = {'recentrev': ['60000']}
         out = s.body(req)
@@ -625,13 +648,13 @@
         assert 'TEST1' in out
 
     def test_many_builds_query_builder(self):
-        builder = status_builder.BuilderStatus('builder0', '', self.master)
+        builder = status_builder.BuilderStatus('builder0', None, self.master, 
'')
         add_builds(builder, [('60000', "F TEST1\n. b"),
                              ('60000', ". a\n. b"),
-                             ('60001', "F TEST1\n. b")])        
+                             ('60001', "F TEST1\n. b")])
 
         s = summary.Summary()
-        res = witness_cat_branch(s)        
+        res = witness_cat_branch(s)
         req = FakeRequest([builder])
         req.args={'builder': ['builder0']}
         out = s.body(req)
@@ -661,13 +684,13 @@
 
 
     def test_many_builds_query_builder_builds(self):
-        builder = status_builder.BuilderStatus('builder0', '', self.master)
+        builder = status_builder.BuilderStatus('builder0', None, self.master, 
'')
         add_builds(builder, [('60000', "F TEST1\n. b"),
                              ('60000', ". a\n. b"),
-                             ('60001', "F TEST1\n. b")])        
+                             ('60001', "F TEST1\n. b")])
 
         s = summary.Summary()
-        res = witness_cat_branch(s)        
+        res = witness_cat_branch(s)
         req = FakeRequest([builder])
         req.args={'builder': ['builder0'],
                   'builds': ['0','2-2', '7']}
@@ -693,21 +716,21 @@
         assert 'TEST1' in out
 
     def test_many_pytestLogs(self):
-        builder = status_builder.BuilderStatus('builder1', '', self.master)
-        build = status_builder.BuildStatus(builder, 0)
+        builder = status_builder.BuilderStatus('builder1', '', self.master, '')
+        build = status_builder.BuildStatus(builder, self.master, 0)
         build.started = time.time()
         build.setProperty('got_revision', '70000', None)
         step = build.addStepWithName('pytest')
         step.logs.extend([FakeLog(step, 'pytestLog', "F TEST1")])
         step.setText(["pytest", "failed"])
-        step.stepFinished(summary.FAILURE)        
+        step.stepFinished(summary.FAILURE)
         step2 = build.addStepWithName('pytest2')
         step2.logs.extend([FakeLog(step, 'pytestLog', ". x\nF TEST2")])
         step2.setText(["pytest2", "aborted"])
         step2.stepFinished(summary.EXCEPTION)
         build.buildFinished()
-        builder.touchBuildCache(build)
-        builder.nextBuildNumber = 1
+        builder.buildCache.cache[build.number] = build
+        builder.nextBuildNumber = len(builder.buildCache.cache)
 
         s = summary.Summary()
         req = FakeRequest([builder])
@@ -720,23 +743,23 @@
         assert 'pytest2 aborted' in out
 
     def test_subtle_failures(self):
-        builder = status_builder.BuilderStatus('builder1', '', self.master)
-        build = status_builder.BuildStatus(builder, 0)
+        builder = status_builder.BuilderStatus('builder1', '', self.master, '')
+        build = status_builder.BuildStatus(builder, self.master, 0)
         build.started = time.time()
         build.setProperty('got_revision', '70000', None)
-        step = build.addStepWithName('pytest')        
+        step = build.addStepWithName('pytest')
         step.logs.extend([FakeLog(step, 'pytestLog', ". TEST1")])
         step.setText(["pytest", "failed slave lost"])
-        step.stepFinished(summary.FAILURE)        
+        step.stepFinished(summary.FAILURE)
         build.buildFinished()
-        builder.touchBuildCache(build)
-        builder.nextBuildNumber = 1
+        builder.buildCache.cache[build.number] = build
+        builder.nextBuildNumber = len(builder.buildCache.cache)
 
         s = summary.Summary()
         req = FakeRequest([builder])
         out = s.body(req)
 
-        assert 'pytest failed slave lost' in out        
+        assert 'pytest failed slave lost' in out
 
 
     def test_category_branch_sorting_key(self):
@@ -765,16 +788,16 @@
         assert res == (2, '', 2, 'release/1')
 
         res = s._cat_branch_key(('', 'what'))
-        assert res == (2, '', 4, 'what')                
+        assert res == (2, '', 4, 'what')
 
     def test_builders_with_categories(self):
-        builder1 = status_builder.BuilderStatus('builder_foo', 'foo', 
self.master)
-        builder2 = status_builder.BuilderStatus('builder_bar', 'bar', 
self.master)
-        builder3 = status_builder.BuilderStatus('builder_', '', self.master)
+        builder1 = status_builder.BuilderStatus('builder_foo', 'foo', 
self.master, '')
+        builder2 = status_builder.BuilderStatus('builder_bar', 'bar', 
self.master, '')
+        builder3 = status_builder.BuilderStatus('builder_', '', self.master, 
'')
 
         add_builds(builder1, [('60000', "F TEST1\n")])
         add_builds(builder2, [('60000', "F TEST2\n")])
-        add_builds(builder3, [('60000', "F TEST3\n")])            
+        add_builds(builder3, [('60000', "F TEST3\n")])
 
         s = summary.Summary(['foo', 'bar'])
         req = FakeRequest([builder1, builder2, builder3])
@@ -790,7 +813,7 @@
         assert "{bar}" in out
 
     def test_two_builds_different_rev_digits(self):
-        builder = status_builder.BuilderStatus('builder0', '', self.master)
+        builder = status_builder.BuilderStatus('builder0', '', self.master, '')
         add_builds(builder, [(999, "F TEST1\n. b"),
                              (1000, "F TEST1\n. b")])
 
@@ -804,16 +827,16 @@
         assert p999builder0-p999 == p1000builder0-p1000+1
 
     def test_build_times_and_filtering(self):
-        builder1 = status_builder.BuilderStatus('builder1', '', self.master)
-        builder2 = status_builder.BuilderStatus('builder2', '', self.master)
- 
+        builder1 = status_builder.BuilderStatus('builder1', '', self.master, 
'')
+        builder2 = status_builder.BuilderStatus('builder2', '', self.master, 
'')
+
         add_builds(builder1, [('60000', "F TEST1\n")])
-        add_builds(builder2, [('50000', ". TEST2\n")])        
+        add_builds(builder2, [('50000', ". TEST2\n")])
         add_builds(builder2, [('60000', "F TEST2\n")])
 
         builder1.getBuild(0).started  = 1228258800 # 3 Dec 2008
         builder1.getBuild(0).finished = 1228258800 # 3 Dec 2008
-        builder2.getBuild(1).started  = 1228431600 # 5 Dec 2008        
+        builder2.getBuild(1).started  = 1228431600 # 5 Dec 2008
         builder2.getBuild(1).finished = 1228431600 # 5 Dec 2008
 
         builder2.getBuild(0).started  = 1227913200 # 29 Nov 2008
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to