- commit
- cc83b1aa5bd4406519d934e90abdebd71b17c389
- parent
- 7efd7accda07fa66c1286d38d4815407e1402c6a
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2018-08-03 10:53
update test setup
Diffstat
| M | setup.cfg | 1 | - |
| D | tests/shared.py | 29 | ----------------------------- |
| D | tests/test_deferred.py | 215 | ------------------------------------------------------------ |
| A | tests/test_promise.py | 206 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| M | tox.ini | 6 | +++--- |
5 files changed, 209 insertions, 248 deletions
diff --git a/setup.cfg b/setup.cfg
@@ -5,7 +5,6 @@ cover-inclusive=1 5 5 cover-erase=1 6 6 cover-branches=1 7 7 cover-html=18 -1 cover-html-dir=.cover9 8 10 9 [flake8] 11 10 exclude=.env,.tox,.git,build,dist,docs
diff --git a/tests/shared.py b/tests/shared.py
@@ -1,29 +0,0 @@1 -1 try:2 -1 import unittest2 as unittest # flake8: noqa3 -1 except ImportError:4 -1 import unittest # flake8: noqa5 -16 -17 -1 class SpyMixin:8 -1 def __init__(self):9 -1 self._spy_calls = {}10 -1 self._key = 011 -112 -1 def create_spy(self):13 -1 key = self._key14 -1 self._key += 115 -116 -1 def spy(*args, **kwargs):17 -1 if not key in self._spy_calls:18 -1 self._spy_calls[key] = []19 -1 self._spy_calls[key].append((args, kwargs))20 -121 -1 spy.key = key22 -1 return spy23 -124 -1 def assertCalled(self, spy):25 -1 self.assertIn(spy.key, self._spy_calls)26 -127 -1 def assertCalledWith(self, spy, *args, **kwargs):28 -1 self.assertCalled(spy)29 -1 self.assertIn((args, kwargs), self._spy_calls[spy.key])
diff --git a/tests/test_deferred.py b/tests/test_deferred.py
@@ -1,215 +0,0 @@1 -1 import shared2 -1 from shared import unittest3 -14 -1 from laneya import deferred as q5 -16 -17 -1 class TestDeferred(unittest.TestCase, shared.SpyMixin):8 -1 def __init__(self, *args, **kwargs):9 -1 unittest.TestCase.__init__(self, *args, **kwargs)10 -1 shared.SpyMixin.__init__(self)11 -112 -1 def assertNeverCalled(self, *args, **kwargs):13 -1 assert False14 -115 -1 def test_deferred_resolve(self):16 -1 spy = self.create_spy()17 -118 -1 d = q.Deferred()19 -1 d.resolve('foo')20 -1 d.promise.then(spy, self.assertNeverCalled)._raise()21 -122 -1 self.assertCalledWith(spy, 'foo')23 -124 -1 def test_deferred_resolve_inverted(self):25 -1 spy = self.create_spy()26 -127 -1 d = q.Deferred()28 -1 d.promise.then(spy, self.assertNeverCalled)._raise()29 -1 d.resolve('foo')30 -131 -1 self.assertCalledWith(spy, 'foo')32 -133 -1 def test_deferred_resolve_done(self):34 -1 spy = self.create_spy()35 -136 -1 d = q.Deferred()37 -1 d.promise.then(spy, self.assertNeverCalled)._raise()38 -1 d.resolve('foo')39 -140 -1 with self.assertRaises(q.AlreadyDoneError):41 -1 d.resolve('bar')42 -143 -1 with self.assertRaises(q.AlreadyDoneError):44 -1 d.reject('bar')45 -146 -1 d.resolve('bar', silent=True)47 -1 d.reject('bar', silent=True)48 -149 -1 self.assertCalledWith(spy, 'foo')50 -151 -1 def test_deferred_reject(self):52 -1 spy = self.create_spy()53 -154 -1 d = q.Deferred()55 -1 d.reject('foo')56 -1 d.promise.then(self.assertNeverCalled, spy)._raise()57 -158 -1 self.assertCalledWith(spy, 'foo')59 -160 -1 def test_deferred_reject_inverted(self):61 -1 spy = self.create_spy()62 -163 -1 d = q.Deferred()64 -1 d.promise.then(self.assertNeverCalled, spy)._raise()65 -1 d.reject('foo')66 -167 -1 self.assertCalledWith(spy, 'foo')68 -169 -1 def test_deferred_reject_done(self):70 -1 spy = self.create_spy()71 -172 -1 d = q.Deferred()73 -1 d.promise.then(self.assertNeverCalled, spy)._raise()74 -1 d.reject('foo')75 -176 -1 with self.assertRaises(q.AlreadyDoneError):77 -1 d.resolve('bar')78 -179 -1 with self.assertRaises(q.AlreadyDoneError):80 -1 d.reject('bar')81 -182 -1 d.resolve('bar', silent=True)83 -1 d.reject('bar', silent=True)84 -185 -1 self.assertCalledWith(spy, 'foo')86 -187 -1 def test_success_propagation(self):88 -1 spy = self.create_spy()89 -190 -1 d = q.Deferred()91 -1 d.resolve('foo')92 -1 d.promise\93 -1 .then(None, self.assertNeverCalled)\94 -1 .then(spy, self.assertNeverCalled)\95 -1 ._raise()96 -197 -1 self.assertCalledWith(spy, 'foo')98 -199 -1 def test_error_propagation(self):100 -1 spy = self.create_spy()101 -1102 -1 d = q.Deferred()103 -1 d.reject('foo')104 -1 d.promise\105 -1 .then(self.assertNeverCalled)\106 -1 .then(self.assertNeverCalled, spy)\107 -1 ._raise()108 -1109 -1 self.assertCalledWith(spy, 'foo')110 -1111 -1 def test_success_chaining(self):112 -1 spy = self.create_spy()113 -1 fn = lambda x: x + 'bar'114 -1115 -1 d = q.Deferred()116 -1 d.resolve('foo')117 -1 d.promise\118 -1 .then(fn, self.assertNeverCalled)\119 -1 .then(spy, self.assertNeverCalled)\120 -1 ._raise()121 -1122 -1 self.assertCalledWith(spy, 'foobar')123 -1124 -1 def test_error_chaining(self):125 -1 spy = self.create_spy()126 -1 fn = lambda x: x + 'bar'127 -1128 -1 d = q.Deferred()129 -1 d.reject('foo')130 -1 d.promise\131 -1 .then(self.assertNeverCalled, fn)\132 -1 .then(spy, self.assertNeverCalled)\133 -1 ._raise()134 -1135 -1 self.assertCalledWith(spy, 'foobar')136 -1137 -1 def test_when_with_value(self):138 -1 spy = self.create_spy()139 -1140 -1 p = q.when('foo')141 -1 p.then(spy, self.assertNeverCalled)._raise()142 -1143 -1 self.assertCalledWith(spy, 'foo')144 -1145 -1 def test_when_with_promise(self):146 -1 p1 = q.Promise()147 -1 p2 = q.when(p1)148 -1149 -1 self.assertEqual(p1, p2)150 -1151 -1 def test_reject(self):152 -1 spy = self.create_spy()153 -1154 -1 p = q.reject('foo')155 -1 p.then(self.assertNeverCalled, spy)._raise()156 -1157 -1 self.assertCalledWith(spy, 'foo')158 -1159 -1 def test_wrap_return(self):160 -1 spy = self.create_spy()161 -1 fn = lambda x: 'foo'162 -1163 -1 p = q.wrap(fn)('bar')164 -1 p.then(spy, self.assertNeverCalled)._raise()165 -1166 -1 self.assertCalledWith(spy, 'foo')167 -1168 -1 def test_wrap_raise(self):169 -1 spy = self.create_spy()170 -1 err = Exception('foo')171 -1172 -1 def fn(x):173 -1 raise err174 -1175 -1 p = q.wrap(fn)('bar')176 -1 p.then(self.assertNeverCalled, spy)._raise()177 -1178 -1 self.assertCalledWith(spy, err)179 -1180 -1 def test_raise(self):181 -1 with self.assertRaises(AssertionError):182 -1 q.when('foo').then(self.assertNeverCalled)._raise()183 -1184 -1 def test_all_success(self):185 -1 spy = self.create_spy()186 -1187 -1 d1 = q.Deferred()188 -1 d2 = q.Deferred()189 -1 d3 = q.Deferred()190 -1191 -1 d1.resolve('foo')192 -1 d3.resolve('baz')193 -1 d2.resolve('bar')194 -1195 -1 q.all(d1.promise, d2.promise, d3.promise)\196 -1 .then(spy, self.assertNeverCalled)\197 -1 ._raise()198 -1199 -1 self.assertCalledWith(spy, ['foo', 'bar', 'baz'])200 -1201 -1 def test_all_error(self):202 -1 spy = self.create_spy()203 -1204 -1 d1 = q.Deferred()205 -1 d2 = q.Deferred()206 -1 d3 = q.Deferred()207 -1208 -1 d2.resolve('bar')209 -1 d3.reject('baz')210 -1211 -1 q.all(d1.promise, d2.promise, d3.promise)\212 -1 .then(self.assertNeverCalled, spy)\213 -1 ._raise()214 -1215 -1 self.assertCalledWith(spy, 'baz')
diff --git a/tests/test_promise.py b/tests/test_promise.py
@@ -0,0 +1,206 @@
-1 1 import unittest
-1 2
-1 3 try:
-1 4 from unittest.mock import Mock
-1 5 except ImportError:
-1 6 from mock import Mock
-1 7
-1 8 from laneya import promise as q
-1 9
-1 10
-1 11 class TestPromise(unittest.TestCase):
-1 12 def assert_never_called(self, *args, **kwargs):
-1 13 assert False
-1 14
-1 15 def raise_rejected(self, promise):
-1 16 if (promise._status == q.REJECTED and
-1 17 isinstance(promise._value, Exception)):
-1 18 raise promise._value
-1 19
-1 20 def test_promise_resolve(self):
-1 21 mock = Mock()
-1 22
-1 23 promise = q.Promise()
-1 24 promise.resolve('foo')
-1 25 promise.then(mock, self.assert_never_called)
-1 26
-1 27 mock.assert_called_with('foo')
-1 28
-1 29 def test_promise_resolve_inverted(self):
-1 30 mock = Mock()
-1 31
-1 32 promise = q.Promise()
-1 33 promise.then(mock, self.assert_never_called)
-1 34 promise.resolve('foo')
-1 35
-1 36 mock.assert_called_with('foo')
-1 37
-1 38 def test_promise_resolve_twice(self):
-1 39 mock = Mock()
-1 40
-1 41 promise = q.Promise()
-1 42 promise.resolve('foo')
-1 43 promise.resolve('bar')
-1 44 promise.then(mock, self.assert_never_called)
-1 45
-1 46 mock.assert_called_with('foo')
-1 47
-1 48 def test_promise_reject(self):
-1 49 mock = Mock()
-1 50
-1 51 promise = q.Promise()
-1 52 promise.reject('foo')
-1 53 promise.then(self.assert_never_called, mock)
-1 54
-1 55 mock.assert_called_with('foo')
-1 56
-1 57 def test_promise_reject_inverted(self):
-1 58 mock = Mock()
-1 59
-1 60 promise = q.Promise()
-1 61 promise.then(self.assert_never_called, mock)
-1 62 promise.reject('foo')
-1 63
-1 64 mock.assert_called_with('foo')
-1 65
-1 66 def test_promise_reject_twice(self):
-1 67 mock = Mock()
-1 68
-1 69 promise = q.Promise()
-1 70 promise.reject('foo')
-1 71 promise.reject('bar')
-1 72 promise.then(self.assert_never_called, mock)
-1 73
-1 74 mock.assert_called_with('foo')
-1 75
-1 76 def test_success_propagation(self):
-1 77 mock = Mock()
-1 78
-1 79 promise = q.Promise()
-1 80 promise.resolve('foo')
-1 81 promise\
-1 82 .then(None, self.assert_never_called)\
-1 83 .then(mock, self.assert_never_called)
-1 84
-1 85 mock.assert_called_with('foo')
-1 86
-1 87 def test_error_propagation(self):
-1 88 mock = Mock()
-1 89
-1 90 promise = q.Promise()
-1 91 promise.reject('foo')
-1 92 promise\
-1 93 .then(self.assert_never_called)\
-1 94 .catch(mock)
-1 95
-1 96 mock.assert_called_with('foo')
-1 97
-1 98 def test_success_chaining(self):
-1 99 mock = Mock()
-1 100
-1 101 def fn(x):
-1 102 return x + 'bar'
-1 103
-1 104 promise = q.Promise()
-1 105 promise.resolve('foo')
-1 106 promise\
-1 107 .then(fn, self.assert_never_called)\
-1 108 .then(mock, self.assert_never_called)
-1 109
-1 110 mock.assert_called_with('foobar')
-1 111
-1 112 def test_error_chaining(self):
-1 113 mock = Mock()
-1 114
-1 115 def fn(x):
-1 116 return x + 'bar'
-1 117
-1 118 promise = q.Promise()
-1 119 promise.reject('foo')
-1 120 promise\
-1 121 .then(self.assert_never_called, fn)\
-1 122 .then(mock, self.assert_never_called)
-1 123
-1 124 mock.assert_called_with('foobar')
-1 125
-1 126 def test_when_with_value(self):
-1 127 mock = Mock()
-1 128
-1 129 promise = q.when('foo')
-1 130 promise.then(mock, self.assert_never_called)
-1 131
-1 132 mock.assert_called_with('foo')
-1 133
-1 134 def test_when_with_promise(self):
-1 135 p1 = q.Promise()
-1 136 p2 = q.when(p1)
-1 137
-1 138 self.assertEqual(p1, p2)
-1 139
-1 140 def test_reject_with_value(self):
-1 141 mock = Mock()
-1 142
-1 143 promise = q.reject('foo')
-1 144 promise.then(self.assert_never_called, mock)
-1 145
-1 146 mock.assert_called_with('foo')
-1 147
-1 148 def test_reject_with_promise(self):
-1 149 p1 = q.Promise()
-1 150 p2 = q.reject(p1)
-1 151
-1 152 self.assertEqual(p1, p2)
-1 153
-1 154 def test_wrap_return(self):
-1 155 mock = Mock()
-1 156
-1 157 @q.wrap
-1 158 def fn(x):
-1 159 return 'foo'
-1 160
-1 161 promise = fn('bar')
-1 162 promise.then(mock, self.assert_never_called)
-1 163
-1 164 mock.assert_called_with('foo')
-1 165
-1 166 def test_wrap_raise(self):
-1 167 mock = Mock()
-1 168 err = Exception('foo')
-1 169
-1 170 @q.wrap
-1 171 def fn(x):
-1 172 raise err
-1 173
-1 174 promise = fn('bar')
-1 175 promise.then(self.assert_never_called, mock)
-1 176
-1 177 mock.assert_called_with(err)
-1 178
-1 179 def test_all_success(self):
-1 180 mock = Mock()
-1 181
-1 182 p1 = q.Promise()
-1 183 p2 = q.Promise()
-1 184 p3 = q.Promise()
-1 185
-1 186 p1.resolve('foo')
-1 187 p3.resolve('baz')
-1 188 p2.resolve('bar')
-1 189
-1 190 q.all([p1, p2, p3]).then(mock, self.assert_never_called)
-1 191
-1 192 mock.assert_called_with(['foo', 'bar', 'baz'])
-1 193
-1 194 def test_all_error(self):
-1 195 mock = Mock()
-1 196
-1 197 p1 = q.Promise()
-1 198 p2 = q.Promise()
-1 199 p3 = q.Promise()
-1 200
-1 201 p2.resolve('bar')
-1 202 p3.reject('baz')
-1 203
-1 204 q.all([p1, p2, p3]).then(self.assert_never_called, mock)
-1 205
-1 206 mock.assert_called_with('baz')
diff --git a/tox.ini b/tox.ini
@@ -4,7 +4,7 @@ 4 4 # and then run "tox" from this directory. 5 5 6 6 [tox]7 -1 envlist = py26, py27-1 7 envlist = py27, py3 8 8 9 9 [testenv] 10 10 commands = @@ -15,9 +15,9 @@ deps = 15 15 nose 16 16 coverage 17 1718 -1 [testenv:py26]-1 18 [testenv:py27] 19 19 deps = 20 20 flake8 21 21 nose 22 22 coverage23 -1 unittest2-1 23 mock