Skip to content

Commit db09cce

Browse files
authored
Merge pull request #59 from diox/remove-django-nose
Remove django-nose completely
2 parents 8bda536 + e8830e6 commit db09cce

File tree

4 files changed

+78
-64
lines changed

4 files changed

+78
-64
lines changed

multidb/tests.py

+75-61
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,35 @@
11
import warnings
22
from threading import Lock, Thread
3+
34
from django.http import HttpRequest, HttpResponse
45
from django.test import TestCase
56
from django.test.utils import override_settings
67

8+
79
try:
810
from unittest import mock
911
except ImportError:
1012
import mock
11-
from nose.tools import eq_
1213

1314
# For deprecation tests
1415
import multidb
1516
import multidb.pinning
16-
17-
from multidb import (DEFAULT_DB_ALIAS, ReplicaRouter, PinningReplicaRouter,
18-
get_replica)
19-
from multidb.middleware import (pinning_cookie, pinning_cookie_httponly,
20-
pinning_cookie_samesite, pinning_cookie_secure,
21-
pinning_seconds, PinningRouterMiddleware)
22-
from multidb.pinning import (this_thread_is_pinned, pin_this_thread,
23-
unpin_this_thread, use_primary_db, db_write)
17+
from multidb import DEFAULT_DB_ALIAS, PinningReplicaRouter, ReplicaRouter, get_replica
18+
from multidb.middleware import (
19+
PinningRouterMiddleware,
20+
pinning_cookie,
21+
pinning_cookie_httponly,
22+
pinning_cookie_samesite,
23+
pinning_cookie_secure,
24+
pinning_seconds,
25+
)
26+
from multidb.pinning import (
27+
db_write,
28+
pin_this_thread,
29+
this_thread_is_pinned,
30+
unpin_this_thread,
31+
use_primary_db,
32+
)
2433

2534

2635
class UnpinningTestCase(TestCase):
@@ -31,13 +40,12 @@ def tearDown(self):
3140

3241

3342
class ReplicaRouterTests(TestCase):
34-
3543
def test_db_for_read(self):
36-
eq_(ReplicaRouter().db_for_read(None), get_replica())
44+
self.assertEqual(ReplicaRouter().db_for_read(None), get_replica())
3745
# TODO: Test the round-robin functionality.
3846

3947
def test_db_for_write(self):
40-
eq_(ReplicaRouter().db_for_write(None), DEFAULT_DB_ALIAS)
48+
self.assertEqual(ReplicaRouter().db_for_write(None), DEFAULT_DB_ALIAS)
4149

4250
def test_allow_syncdb(self):
4351
router = ReplicaRouter()
@@ -46,32 +54,32 @@ def test_allow_syncdb(self):
4654

4755
def test_allow_migrate(self):
4856
router = ReplicaRouter()
49-
assert router.allow_migrate(DEFAULT_DB_ALIAS, 'dummy')
50-
assert not router.allow_migrate(get_replica(), 'dummy')
57+
assert router.allow_migrate(DEFAULT_DB_ALIAS, "dummy")
58+
assert not router.allow_migrate(get_replica(), "dummy")
5159

5260

5361
class SettingsTests(TestCase):
5462
"""Tests for default settings."""
5563

5664
def test_defaults(self):
5765
"""Check that the cookie name has the right default."""
58-
eq_(pinning_cookie(), 'multidb_pin_writes')
59-
eq_(pinning_seconds(), 15)
60-
eq_(pinning_cookie_secure(), False)
61-
eq_(pinning_cookie_httponly(), False)
62-
eq_(pinning_cookie_samesite(), 'Lax')
66+
self.assertEqual(pinning_cookie(), "multidb_pin_writes")
67+
self.assertEqual(pinning_seconds(), 15)
68+
self.assertEqual(pinning_cookie_secure(), False)
69+
self.assertEqual(pinning_cookie_httponly(), False)
70+
self.assertEqual(pinning_cookie_samesite(), "Lax")
6371

6472
@override_settings(MULTIDB_PINNING_COOKIE="override_pin_writes")
6573
@override_settings(MULTIDB_PINNING_SECONDS=60)
6674
@override_settings(MULTIDB_PINNING_COOKIE_SECURE=True)
6775
@override_settings(MULTIDB_PINNING_COOKIE_HTTPONLY=True)
6876
@override_settings(MULTIDB_PINNING_COOKIE_SAMESITE="Strict")
6977
def test_overrides(self):
70-
eq_(pinning_cookie(), "override_pin_writes")
71-
eq_(pinning_seconds(), 60)
72-
eq_(pinning_cookie_secure(), True)
73-
eq_(pinning_cookie_httponly(), True)
74-
eq_(pinning_cookie_samesite(), "Strict")
78+
self.assertEqual(pinning_cookie(), "override_pin_writes")
79+
self.assertEqual(pinning_seconds(), 60)
80+
self.assertEqual(pinning_cookie_secure(), True)
81+
self.assertEqual(pinning_cookie_httponly(), True)
82+
self.assertEqual(pinning_cookie_samesite(), "Strict")
7583

7684

7785
class PinningTests(UnpinningTestCase):
@@ -80,40 +88,40 @@ class PinningTests(UnpinningTestCase):
8088

8189
def test_pinning_encapsulation(self):
8290
"""Check the pinning getters and setters."""
83-
assert not this_thread_is_pinned(), \
84-
"Thread started out pinned or this_thread_is_pinned() is broken."
91+
assert (
92+
not this_thread_is_pinned()
93+
), "Thread started out pinned or this_thread_is_pinned() is broken."
8594

8695
pin_this_thread()
87-
assert this_thread_is_pinned(), \
88-
"pin_this_thread() didn't pin the thread."
96+
assert this_thread_is_pinned(), "pin_this_thread() didn't pin the thread."
8997

9098
unpin_this_thread()
91-
assert not this_thread_is_pinned(), \
92-
"Thread remained pinned after unpin_this_thread()."
99+
assert (
100+
not this_thread_is_pinned()
101+
), "Thread remained pinned after unpin_this_thread()."
93102

94103
def test_pinned_reads(self):
95104
"""Test PinningReplicaRouter.db_for_read() when pinned and when
96105
not."""
97106
router = PinningReplicaRouter()
98107

99-
eq_(router.db_for_read(None), get_replica())
108+
self.assertEqual(router.db_for_read(None), get_replica())
100109

101110
pin_this_thread()
102-
eq_(router.db_for_read(None), DEFAULT_DB_ALIAS)
111+
self.assertEqual(router.db_for_read(None), DEFAULT_DB_ALIAS)
103112

104113
def test_db_write_decorator(self):
105-
106114
def read_view(req):
107-
eq_(router.db_for_read(None), get_replica())
115+
self.assertEqual(router.db_for_read(None), get_replica())
108116
return HttpResponse()
109117

110118
@db_write
111119
def write_view(req):
112-
eq_(router.db_for_read(None), DEFAULT_DB_ALIAS)
120+
self.assertEqual(router.db_for_read(None), DEFAULT_DB_ALIAS)
113121
return HttpResponse()
114122

115123
router = PinningReplicaRouter()
116-
eq_(router.db_for_read(None), get_replica())
124+
self.assertEqual(router.db_for_read(None), get_replica())
117125
write_view(HttpRequest())
118126
read_view(HttpRequest())
119127

@@ -134,43 +142,46 @@ def setUp(self):
134142

135143
def test_pin_on_cookie(self):
136144
"""Thread should pin when the cookie is set."""
137-
self.request.COOKIES[pinning_cookie()] = 'y'
145+
self.request.COOKIES[pinning_cookie()] = "y"
138146
self.middleware.process_request(self.request)
139147
assert this_thread_is_pinned()
140148

141149
def test_unpin_on_no_cookie(self):
142150
"""Thread should unpin when cookie is absent and method is GET."""
143151
pin_this_thread()
144-
self.request.method = 'GET'
152+
self.request.method = "GET"
145153
self.middleware.process_request(self.request)
146154
assert not this_thread_is_pinned()
147155

148156
def test_pin_on_post(self):
149157
"""Thread should pin when method is POST."""
150-
self.request.method = 'POST'
158+
self.request.method = "POST"
151159
self.middleware.process_request(self.request)
152160
assert this_thread_is_pinned()
153161

154162
def test_process_response(self):
155163
"""Make sure the cookie gets set on POSTs but not GETs."""
156164

157-
self.request.method = 'GET'
158-
response = self.middleware.process_response(
159-
self.request, HttpResponse())
165+
self.request.method = "GET"
166+
response = self.middleware.process_response(self.request, HttpResponse())
160167
assert pinning_cookie() not in response.cookies
161168

162-
self.request.method = 'POST'
163-
response = self.middleware.process_response(
164-
self.request, HttpResponse())
169+
self.request.method = "POST"
170+
response = self.middleware.process_response(self.request, HttpResponse())
165171
assert pinning_cookie() in response.cookies
166-
eq_(response.cookies[pinning_cookie()]['max-age'],
167-
pinning_seconds())
168-
eq_(response.cookies[pinning_cookie()]['samesite'],
169-
pinning_cookie_samesite())
170-
eq_(response.cookies[pinning_cookie()]['httponly'],
171-
pinning_cookie_httponly() or '')
172-
eq_(response.cookies[pinning_cookie()]['secure'],
173-
pinning_cookie_secure() or '')
172+
self.assertEqual(
173+
response.cookies[pinning_cookie()]["max-age"], pinning_seconds()
174+
)
175+
self.assertEqual(
176+
response.cookies[pinning_cookie()]["samesite"], pinning_cookie_samesite()
177+
)
178+
self.assertEqual(
179+
response.cookies[pinning_cookie()]["httponly"],
180+
pinning_cookie_httponly() or "",
181+
)
182+
self.assertEqual(
183+
response.cookies[pinning_cookie()]["secure"], pinning_cookie_secure() or ""
184+
)
174185

175186
def test_attribute(self):
176187
"""The cookie should get set if the _db_write attribute is True."""
@@ -182,16 +193,18 @@ def test_attribute(self):
182193
def test_db_write_decorator(self):
183194
"""The @db_write decorator should make any view set the cookie."""
184195
req = self.request
185-
req.method = 'GET'
196+
req.method = "GET"
186197

187198
def view(req):
188199
return HttpResponse()
200+
189201
response = self.middleware.process_response(req, view(req))
190202
assert pinning_cookie() not in response.cookies
191203

192204
@db_write
193205
def write_view(req):
194206
return HttpResponse()
207+
195208
response = self.middleware.process_response(req, write_view(req))
196209
assert pinning_cookie() in response.cookies
197210

@@ -201,6 +214,7 @@ def test_decorator(self):
201214
@use_primary_db
202215
def check():
203216
assert this_thread_is_pinned()
217+
204218
unpin_this_thread()
205219
assert not this_thread_is_pinned()
206220
check()
@@ -210,6 +224,7 @@ def test_decorator_resets(self):
210224
@use_primary_db
211225
def check():
212226
assert this_thread_is_pinned()
227+
213228
pin_this_thread()
214229
assert this_thread_is_pinned()
215230
check()
@@ -289,34 +304,33 @@ def thread2_worker():
289304
class DeprecationTestCase(TestCase):
290305
def test_masterslaverouter(self):
291306
with warnings.catch_warnings(record=True) as w:
292-
warnings.simplefilter('always')
307+
warnings.simplefilter("always")
293308
router = multidb.MasterSlaveRouter()
294309
assert isinstance(router, ReplicaRouter)
295310
assert len(w) == 1
296311
assert issubclass(w[-1].category, DeprecationWarning)
297312

298313
def test_pinningmasterslaverouter(self):
299314
with warnings.catch_warnings(record=True) as w:
300-
warnings.simplefilter('always')
315+
warnings.simplefilter("always")
301316
router = multidb.PinningMasterSlaveRouter()
302317
assert isinstance(router, PinningReplicaRouter)
303318
assert len(w) == 1
304319
assert issubclass(w[-1].category, DeprecationWarning)
305320

306-
@mock.patch.object(multidb, 'get_replica')
321+
@mock.patch.object(multidb, "get_replica")
307322
def test_get_slave(self, mock_get_replica):
308323
with warnings.catch_warnings(record=True) as w:
309-
warnings.simplefilter('always')
324+
warnings.simplefilter("always")
310325
multidb.get_slave()
311326
assert mock_get_replica.called
312327
assert len(w) == 1
313328
assert issubclass(w[-1].category, DeprecationWarning)
314329

315330
def test_use_master(self):
316-
assert isinstance(multidb.pinning.use_master,
317-
use_primary_db.__class__)
331+
assert isinstance(multidb.pinning.use_master, use_primary_db.__class__)
318332
with warnings.catch_warnings(record=True) as w:
319-
warnings.simplefilter('always')
333+
warnings.simplefilter("always")
320334
with multidb.pinning.use_master:
321335
pass
322336
assert len(w) == 1

requirements.txt

-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
django-nose==1.4.7
21
flake8==6.0.0

setup.cfg

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[flake8]
2+
max-line-length = 88
3+
extend-ignore = E203

test_settings.py

-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
# A Django settings module to support the tests
22

33
SECRET_KEY = 'dummy'
4-
# TEST_RUNNER = 'django_nose.runner.NoseTestSuiteRunner'
5-
64
MIDDLEWARE_CLASSES = (
75
'django.middleware.common.CommonMiddleware',
86
'django.middleware.csrf.CsrfViewMiddleware'

0 commit comments

Comments
 (0)