Index: third_party/buildbot_7_12/buildbot/test/test_p4poller.py |
diff --git a/third_party/buildbot_7_12/buildbot/test/test_p4poller.py b/third_party/buildbot_7_12/buildbot/test/test_p4poller.py |
deleted file mode 100644 |
index 54c632572e1037cd0692660414277d31adbce94d..0000000000000000000000000000000000000000 |
--- a/third_party/buildbot_7_12/buildbot/test/test_p4poller.py |
+++ /dev/null |
@@ -1,213 +0,0 @@ |
-import time |
- |
-from twisted.internet import defer |
-from twisted.trial import unittest |
- |
-from buildbot.changes.changes import Change |
-from buildbot.changes.p4poller import P4Source, get_simple_split |
- |
-first_p4changes = \ |
-"""Change 1 on 2006/04/13 by slamb@testclient 'first rev' |
-""" |
- |
-second_p4changes = \ |
-"""Change 3 on 2006/04/13 by bob@testclient 'short desc truncated' |
-Change 2 on 2006/04/13 by slamb@testclient 'bar' |
-""" |
- |
-third_p4changes = \ |
-"""Change 5 on 2006/04/13 by mpatel@testclient 'first rev' |
-""" |
- |
-change_4_log = \ |
-"""Change 4 by mpatel@testclient on 2006/04/13 21:55:39 |
- |
- short desc truncated because this is a long description. |
-""" |
-change_3_log = \ |
-"""Change 3 by bob@testclient on 2006/04/13 21:51:39 |
- |
- short desc truncated because this is a long description. |
-""" |
- |
-change_2_log = \ |
-"""Change 2 by slamb@testclient on 2006/04/13 21:46:23 |
- |
- creation |
-""" |
- |
-p4change = { |
- 3: change_3_log + |
-"""Affected files ... |
- |
-... //depot/myproject/branch_b/branch_b_file#1 add |
-... //depot/myproject/branch_b/whatbranch#1 branch |
-... //depot/myproject/branch_c/whatbranch#1 branch |
-""", |
- 2: change_2_log + |
-"""Affected files ... |
- |
-... //depot/myproject/trunk/whatbranch#1 add |
-... //depot/otherproject/trunk/something#1 add |
-""", |
- 5: change_4_log + |
-"""Affected files ... |
- |
-... //depot/myproject/branch_b/branch_b_file#1 add |
-... //depot/myproject/branch_b#75 edit |
-... //depot/myproject/branch_c/branch_c_file#1 add |
-""", |
-} |
- |
- |
-class MockP4Source(P4Source): |
- """Test P4Source which doesn't actually invoke p4.""" |
- invocation = 0 |
- |
- def __init__(self, p4changes, p4change, *args, **kwargs): |
- P4Source.__init__(self, *args, **kwargs) |
- self.p4changes = p4changes |
- self.p4change = p4change |
- |
- def _get_changes(self): |
- assert self.working |
- result = self.p4changes[self.invocation] |
- self.invocation += 1 |
- return defer.succeed(result) |
- |
- def _get_describe(self, dummy, num): |
- assert self.working |
- return defer.succeed(self.p4change[num]) |
- |
-class TestP4Poller(unittest.TestCase): |
- def setUp(self): |
- self.changes = [] |
- self.addChange = self.changes.append |
- |
- def failUnlessIn(self, substr, string): |
- # this is for compatibility with python2.2 |
- if isinstance(string, str): |
- self.failUnless(string.find(substr) != -1) |
- else: |
- self.assertIn(substr, string) |
- |
- def testCheck(self): |
- """successful checks""" |
- self.t = MockP4Source(p4changes=[first_p4changes, second_p4changes], |
- p4change=p4change, |
- p4port=None, p4user=None, |
- p4base='//depot/myproject/', |
- split_file=lambda x: x.split('/', 1)) |
- self.t.parent = self |
- |
- # The first time, it just learns the change to start at. |
- self.assert_(self.t.last_change is None) |
- self.assert_(not self.t.working) |
- return self.t.checkp4().addCallback(self._testCheck2) |
- |
- def _testCheck2(self, res): |
- self.assertEquals(self.changes, []) |
- self.assertEquals(self.t.last_change, 1) |
- |
- # Subsequent times, it returns Change objects for new changes. |
- return self.t.checkp4().addCallback(self._testCheck3) |
- |
- def _testCheck3(self, res): |
- self.assertEquals(len(self.changes), 3) |
- self.assertEquals(self.t.last_change, 3) |
- self.assert_(not self.t.working) |
- |
- # They're supposed to go oldest to newest, so this one must be first. |
- self.assertEquals(self.changes[0].asText(), |
- Change(who='slamb', |
- files=['whatbranch'], |
- comments=change_2_log, |
- revision='2', |
- when=self.makeTime("2006/04/13 21:46:23"), |
- branch='trunk').asText()) |
- |
- # These two can happen in either order, since they're from the same |
- # Perforce change. |
- self.failUnlessIn( |
- Change(who='bob', |
- files=['branch_b_file', |
- 'whatbranch'], |
- comments=change_3_log, |
- revision='3', |
- when=self.makeTime("2006/04/13 21:51:39"), |
- branch='branch_b').asText(), |
- [c.asText() for c in self.changes]) |
- self.failUnlessIn( |
- Change(who='bob', |
- files=['whatbranch'], |
- comments=change_3_log, |
- revision='3', |
- when=self.makeTime("2006/04/13 21:51:39"), |
- branch='branch_c').asText(), |
- [c.asText() for c in self.changes]) |
- |
- def makeTime(self, timestring): |
- datefmt = '%Y/%m/%d %H:%M:%S' |
- when = time.mktime(time.strptime(timestring, datefmt)) |
- return when |
- |
- def testFailedChanges(self): |
- """'p4 changes' failure is properly ignored""" |
- self.t = MockP4Source(p4changes=['Perforce client error:\n...'], |
- p4change={}, |
- p4port=None, p4user=None) |
- self.t.parent = self |
- d = self.t.checkp4() |
- d.addCallback(self._testFailedChanges2) |
- return d |
- |
- def _testFailedChanges2(self, f): |
- self.failUnlessEqual(f, None) |
- self.assert_(not self.t.working) |
- |
- def testFailedDescribe(self): |
- """'p4 describe' failure is properly ignored""" |
- c = dict(p4change) |
- c[3] = 'Perforce client error:\n...' |
- self.t = MockP4Source(p4changes=[first_p4changes, second_p4changes], |
- p4change=c, p4port=None, p4user=None) |
- self.t.parent = self |
- d = self.t.checkp4() |
- d.addCallback(self._testFailedDescribe2) |
- return d |
- |
- def _testFailedDescribe2(self, res): |
- # first time finds nothing; check again. |
- return self.t.checkp4().addCallback(self._testFailedDescribe3) |
- |
- def _testFailedDescribe3(self, f): |
- self.failUnlessEqual(f, None) |
- self.assert_(not self.t.working) |
- self.assertEquals(self.t.last_change, 2) |
- |
- def testAlreadyWorking(self): |
- """don't launch a new poll while old is still going""" |
- self.t = P4Source() |
- self.t.working = True |
- self.assert_(self.t.last_change is None) |
- d = self.t.checkp4() |
- d.addCallback(self._testAlreadyWorking2) |
- |
- def _testAlreadyWorking2(self, res): |
- self.assert_(self.t.last_change is None) |
- |
- def testSplitFile(self): |
- """Make sure split file works on branch only changes""" |
- self.t = MockP4Source(p4changes=[third_p4changes], |
- p4change=p4change, |
- p4port=None, p4user=None, |
- p4base='//depot/myproject/', |
- split_file=get_simple_split) |
- self.t.parent = self |
- self.t.last_change = 50 |
- d = self.t.checkp4() |
- d.addCallback(self._testSplitFile) |
- |
- def _testSplitFile(self, res): |
- self.assertEquals(len(self.changes), 2) |
- self.assertEquals(self.t.last_change, 5) |