def test_d_ini(self): self.setupSimple() c = Change('author', ['test-app/locales/l10n.ini'], 'comment', branch='test-branch') c.number = 1 self.scheduler.addChange(c) c = Change('author', ['test-app/locales/en-US/app.dtd'], 'comment', branch='test-branch') c.number = 2 self.scheduler.addChange(c) self.failUnlessEqual(len(self.master.sets), 1) bset = self.master.sets[0] self.failUnlessEqual(bset.builderNames, ['tree-builds']) ftb = FakeBuilder('tree-builds') bset.start([ftb]) self.failUnlessEqual(len(ftb.requests), 1) st = bset.status self.failIf(st.isFinished()) builder = builderstatus.BuilderStatus('tree-builds') build = builderstatus.BuildStatus(builder, 1) build.setResults(builderstatus.SUCCESS) ftb.requests[0].finished(build) self.failUnless(st.isFinished()) self.failUnless(self.scheduler.dSubmitBuildsets) self.scheduler.dSubmitBuildsets.cancel() pendings = self.scheduler.pendings self.failUnlessEqual(len(pendings), 2) self.failUnlessEqual(len(pendings[('test', 'de')]), 1) self.failUnlessEqual(len(pendings[('test', 'fr')]), 1)
def test_d_ini(self): self.setupSimple() c = Change('author', ['test-app/locales/l10n.ini'], 'comment', branch='test-branch') c.number = 1 self.scheduler.addChange(c) c = Change('author', ['test-app/locales/en-US/app.dtd'], 'comment', branch='test-branch') c.number = 2 self.scheduler.addChange(c) self.failUnlessEqual(len(self.master.sets), 1) bset = self.master.sets[0] self.failUnlessEqual(bset.builderNames, ['tree-builds']) ftb = FakeBuilder('tree-builds') bset.start([ftb]) self.failUnlessEqual(len(ftb.requests), 1) st = bset.status self.failIf(st.isFinished()) builder = builderstatus.BuilderStatus('tree-builds') build = builderstatus.BuildStatus(builder, 1) build.setResults(builderstatus.SUCCESS) ftb.requests[0].finished(build) self.failUnless(st.isFinished()) self.failUnless(self.scheduler.dSubmitBuildsets) self.scheduler.dSubmitBuildsets.cancel() pendings = self.scheduler.pendings self.failUnlessEqual(len(pendings), 2) self.failUnlessEqual(len(pendings[('test','de')]), 1) self.failUnlessEqual(len(pendings[('test','fr')]), 1)
def test_c_mixed(self): self.setupSimple() c = Change('author', ['test-app/locales/en-US/file.dtd'], 'comment', branch='test-branch') c.number = 1 self.scheduler.addChange(c) c = Change('author', ['test-app/file.dtd'], 'comment', branch='l10n-test', properties={'locale':'de'}) c.number = 2 self.scheduler.addChange(c) self.failUnless(self.scheduler.dSubmitBuildsets) self.scheduler.dSubmitBuildsets.cancel() pendings = self.scheduler.pendings self.failUnlessEqual(len(pendings), 2) self.failUnlessEqual(len(pendings[('test','de')]), 2) self.failUnlessEqual(len(pendings[('test','fr')]), 1)
def testAB(self): self.setupSimple() c = Change('author', ['some/file.dtd'], 'comment', branch='dir', properties={'locale': 'ab'}) c.number = 1 self.scheduler.addChange(c) self.failUnlessEqual(len(self.master.sets), 1) bset = self.master.sets[0] props = bset.getProperties() self.assertEqual(props['locale'], 'ab') self.assertEqual(props['branch'], 'dir') self.assertEqual(props['tree'], 'dir-compare') self.failUnlessEqual(bset.builderNames, ['dir-compare']) ftb = FakeBuilder('dir-compare') bset.start([ftb]) self.failUnlessEqual(len(ftb.requests), 1) st = bset.status self.failIf(st.isFinished()) builder = builderstatus.BuilderStatus('dir-compare') build = builderstatus.BuildStatus(builder, 1) build.setResults(builderstatus.SUCCESS) ftb.requests[0].finished(build) self.failUnless(st.isFinished())
def _getChangeByNumber_query_done(self, res, changeid): (rows, link_rows, file_rows, properties) = res if not rows: return None (who, comments, isdir, branch, revision, revlink, when, category, repository, project) = rows[0] branch = str_or_none(branch) revision = str_or_none(revision) links = [row[0] for row in link_rows] links.sort() files = [row[0] for row in file_rows] files.sort() c = Change( who=who, files=files, comments=comments, isdir=isdir, links=links, revision=revision, when=when, branch=branch, category=category, revlink=revlink, repository=repository, project=project, ) c.properties.updateFromProperties(properties) c.number = changeid self._change_cache.add(changeid, c) return c
def _getChangeByNumber_query_done(self, res, changeid): (rows, link_rows, file_rows, properties) = res if not rows: return None (who, comments, isdir, branch, revision, revlink, when, category, repository, project) = rows[0] branch = str_or_none(branch) revision = str_or_none(revision) links = [row[0] for row in link_rows] links.sort() files = [row[0] for row in file_rows] files.sort() c = Change(who=who, files=files, comments=comments, isdir=isdir, links=links, revision=revision, when=when, branch=branch, category=category, revlink=revlink, repository=repository, project=project) c.properties.updateFromProperties(properties) c.number = changeid self._change_cache.add(changeid, c) return c
def testDE(self): self.setupSimple() c = Change('author', ['some/file.dtd'], 'comment', branch='dir', properties={'locale': 'de'}) c.number = 1 self.scheduler.addChange(c) self.failUnlessEqual(len(self.master.sets), 0)
def test_en_US(self): self.setupSimple() c = Change('author', ['some/file.dtd'], 'comment', branch='dir', properties={'locale': 'en-US'}) c.number = 1 self.scheduler.addChange(c) self.failUnlessEqual(len(self.master.sets), 2) locs = sorted(map(lambda bset: bset.getProperties()['locale'], self.master.sets)) self.assertEqual(locs, ['ab', 'fr'])
def test_b_EnUS(self): self.setupSimple() c = Change('author', ['test-app/locales/en-US/file.dtd'], 'comment', branch='test-branch') c.number = 1 self.scheduler.addChange(c) self.failUnless(self.scheduler.dSubmitBuildsets) self.scheduler.dSubmitBuildsets.cancel() pendings = self.scheduler.pendings self.failUnlessEqual(len(pendings), 2)
def test_c_mixed(self): self.setupSimple() c = Change('author', ['test-app/locales/en-US/file.dtd'], 'comment', branch='test-branch') c.number = 1 self.scheduler.addChange(c) c = Change('author', ['test-app/file.dtd'], 'comment', branch='l10n-test', properties={'locale': 'de'}) c.number = 2 self.scheduler.addChange(c) self.failUnless(self.scheduler.dSubmitBuildsets) self.scheduler.dSubmitBuildsets.cancel() pendings = self.scheduler.pendings self.failUnlessEqual(len(pendings), 2) self.failUnlessEqual(len(pendings[('test', 'de')]), 2) self.failUnlessEqual(len(pendings[('test', 'fr')]), 1)
def test_en_US(self): self.setupSimple() c = Change('author', ['some/file.dtd'], 'comment', branch='dir', properties={'locale': 'en-US'}) c.number = 1 self.scheduler.addChange(c) self.failUnlessEqual(len(self.master.sets), 2) locs = sorted( map(lambda bset: bset.getProperties()['locale'], self.master.sets)) self.assertEqual(locs, ['ab', 'fr'])
def change14(self): c = Change(**dict(category='devel', isdir=0, repository=u'git://warner', who=u'warner', when=266738404, comments=u'fix whitespace', project=u'Buildbot', branch=u'warnerdb', revlink=u'http://warner/0e92a098b', properties={}, files=[u'master/buildbot/__init__.py'], revision=u'0e92a098b')) c.number = 14 return c
def change14(self): c = Change(**dict( category='devel', isdir=0, repository=u'git://warner', who=u'warner', when=266738404, comments=u'fix whitespace', project=u'Buildbot', branch=u'warnerdb', revlink=u'http://warner/0e92a098b', properties={}, files=[u'master/buildbot/__init__.py'], revision=u'0e92a098b')) c.number = 14 return c
def _txn_getChangeNumberedNow(self, t, changeid): q = self.quoteq( "SELECT author, comments," " is_dir, branch, revision, revlink," " when_timestamp, category," " repository, project" " FROM changes WHERE changeid = ?" ) t.execute(q, (changeid,)) rows = t.fetchall() if not rows: return None (who, comments, isdir, branch, revision, revlink, when, category, repository, project) = rows[0] branch = str_or_none(branch) revision = str_or_none(revision) q = self.quoteq("SELECT link FROM change_links WHERE changeid=?") t.execute(q, (changeid,)) rows = t.fetchall() links = [row[0] for row in rows] links.sort() q = self.quoteq("SELECT filename FROM change_files WHERE changeid=?") t.execute(q, (changeid,)) rows = t.fetchall() files = [row[0] for row in rows] files.sort() p = self.get_properties_from_db("change_properties", "changeid", changeid, t) from buildbot.changes.changes import Change c = Change( who=who, files=files, comments=comments, isdir=isdir, links=links, revision=revision, when=when, branch=branch, category=category, revlink=revlink, repository=repository, project=project, ) c.properties.updateFromProperties(p) c.number = changeid return c
def change13(self): c = Change(**dict( category=None, isdir=0, repository=u'', links=[u'http://buildbot.net', u'http://sf.net/projects/buildbot'], who=u'dustin', when=266738400, comments=u'fix spelling', project=u'', branch=u'master', revlink=None, properties={u'notest': u'no'}, files=[u'master/README.txt', u'slave/README.txt'], revision=u'deadbeef')) c.number = 13 return c
def _txn_getChangeNumberedNow(self, t, changeid): q = self.quoteq("SELECT author, comments," " is_dir, branch, revision, revlink," " when_timestamp, category," " repository, project" " FROM changes WHERE changeid = ?") t.execute(q, (changeid, )) rows = t.fetchall() if not rows: return None (who, comments, isdir, branch, revision, revlink, when, category, repository, project) = rows[0] branch = str_or_none(branch) revision = str_or_none(revision) q = self.quoteq("SELECT link FROM change_links WHERE changeid=?") t.execute(q, (changeid, )) rows = t.fetchall() links = [row[0] for row in rows] links.sort() q = self.quoteq("SELECT filename FROM change_files WHERE changeid=?") t.execute(q, (changeid, )) rows = t.fetchall() files = [row[0] for row in rows] files.sort() p = self.get_properties_from_db("change_properties", "changeid", changeid, t) from buildbot.changes.changes import Change c = Change(who=who, files=files, comments=comments, isdir=isdir, links=links, revision=revision, when=when, branch=branch, category=category, revlink=revlink, repository=repository, project=project) c.properties.updateFromProperties(p) c.number = changeid return c
def change14(self): c = Change( **dict( category="devel", isdir=0, repository=u"git://warner", links=[], who=u"warner", when=266738404, comments=u"fix whitespace", project=u"Buildbot", branch=u"warnerdb", revlink=u"http://warner/0e92a098b", properties={}, files=[u"master/buildbot/__init__.py"], revision=u"0e92a098b", ) ) c.number = 14 return c
def _change_from_chdict(self, chdict): # create a Change object, given a chdict changeid = chdict.pop('number') c = Change(**chdict) c.number = changeid return c