forked from buildbot/buildbot
/
test_eventual.py
70 lines (62 loc) · 2.04 KB
/
test_eventual.py
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
from twisted.trial import unittest
from twisted.internet import defer
from buildbot.eventual import eventually, fireEventually, flushEventualQueue
class TestEventual(unittest.TestCase):
def tearDown(self):
return flushEventualQueue()
def testSend(self):
results = []
eventually(results.append, 1)
self.failIf(results)
def _check():
self.failUnlessEqual(results, [1])
eventually(_check)
def _check2():
self.failUnlessEqual(results, [1,2])
eventually(results.append, 2)
eventually(_check2)
def testFlush(self):
results = []
eventually(results.append, 1)
eventually(results.append, 2)
d = flushEventualQueue()
def _check(res):
self.failUnlessEqual(results, [1,2])
d.addCallback(_check)
return d
def testFlush2(self):
added = []
called = []
done_d = defer.Deferred()
def _then():
called.append("f1")
added.append("f2")
d = flushEventualQueue()
d.addCallback(lambda ign: called.append("f2"))
def _second_flush_done(ign):
done_d.callback(None)
d.addCallback(_second_flush_done)
added.append("f1")
eventually(_then)
added.append(1)
eventually(called.append, 1)
added.append(2)
eventually(called.append, 2)
d = flushEventualQueue()
d.addCallback(flushEventualQueue)
d.addCallback(lambda ign: done_d)
def _check(res):
self.failUnlessEqual(called, ["f1", 1, 2, "f2"])
self.failUnlessEqual(added, called)
d.addCallback(_check)
return d
def testFire(self):
results = []
fireEventually(1).addCallback(results.append)
fireEventually(2).addCallback(results.append)
self.failIf(results)
def _check(res):
self.failUnlessEqual(results, [1,2])
d = flushEventualQueue()
d.addCallback(_check)
return d