Skip to content

Commit

Permalink
Correctly skip these tests when the relevant dependency is missing.
Browse files Browse the repository at this point in the history
  • Loading branch information
thedrow committed Sep 7, 2020
1 parent a8e88bc commit 465d267
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 30 deletions.
2 changes: 1 addition & 1 deletion t/unit/backends/test_azureblockblob.py
Expand Up @@ -9,7 +9,7 @@

MODULE_TO_MOCK = "celery.backends.azureblockblob"

pytest.importorskip('azure')
pytest.importorskip('azure.storage.blob')


class test_AzureBlockBlobBackend:
Expand Down
60 changes: 31 additions & 29 deletions t/unit/backends/test_mongodb.py
Expand Up @@ -31,7 +31,6 @@


class test_MongoBackend:

default_url = 'mongodb://uuuu:pwpw@hostname.dom/database'
replica_set_url = (
'mongodb://uuuu:pwpw@hostname.dom,'
Expand Down Expand Up @@ -128,11 +127,10 @@ def test_init_with_settings(self):

mb = MongoBackend(app=self.app, url='mongodb://')

@patch('dns.resolver.query')
def test_init_mongodb_dns_seedlist(self, dns_resolver_query):
from dns.name import Name
from dns.rdtypes.ANY.TXT import TXT
from dns.rdtypes.IN.SRV import SRV
def test_init_mongodb_dns_seedlist(self):
Name = pytest.importorskip('dns.name').Name
TXT = pytest.importorskip('dns.rdtypes.ANY.TXT').TXT
SRV = pytest.importorskip('dns.rdtypes.IN.SRV').SRV

self.app.conf.mongodb_backend_settings = None

Expand All @@ -150,29 +148,28 @@ def mock_resolver(_, rdtype, rdclass=None, lifetime=None, **kwargs):
elif rdtype == 'TXT':
return [TXT(0, 0, [b'replicaSet=rs0'])]

dns_resolver_query.side_effect = mock_resolver

# uri with user, password, database name, replica set,
# DNS seedlist format
uri = ('srv://'
'celeryuser:celerypassword@'
'dns-seedlist-host.example.com/'
'celerydatabase')

mb = MongoBackend(app=self.app, url=uri)
assert mb.mongo_host == [
'mongo1.example.com:27017',
'mongo2.example.com:27017',
'mongo3.example.com:27017',
]
assert mb.options == dict(
mb._prepare_client_options(),
replicaset='rs0',
ssl=True
)
assert mb.user == 'celeryuser'
assert mb.password == 'celerypassword'
assert mb.database_name == 'celerydatabase'
with patch('dns.resolver.query', side_effect=mock_resolver):
mb = MongoBackend(app=self.app, url=uri)
assert mb.mongo_host == [
'mongo1.example.com:27017',
'mongo2.example.com:27017',
'mongo3.example.com:27017',
]
assert mb.options == dict(
mb._prepare_client_options(),
replicaset='rs0',
ssl=True
)
assert mb.user == 'celeryuser'
assert mb.password == 'celerypassword'
assert mb.database_name == 'celerydatabase'

def test_ensure_mongodb_uri_compliance(self):
mb = MongoBackend(app=self.app, url=None)
Expand All @@ -181,7 +178,7 @@ def test_ensure_mongodb_uri_compliance(self):
assert compliant_uri('mongodb://') == 'mongodb://localhost'

assert compliant_uri('mongodb+something://host') == \
'mongodb+something://host'
'mongodb+something://host'

assert compliant_uri('something://host') == 'mongodb+something://host'

Expand Down Expand Up @@ -564,7 +561,8 @@ def test_encode(self, mongo_backend_factory, serializer, encoded_into):
backend = mongo_backend_factory(serializer=serializer)
assert isinstance(backend.encode(10), encoded_into)

def test_encode_decode(self, mongo_backend_factory, serializer, encoded_into):
def test_encode_decode(self, mongo_backend_factory, serializer,
encoded_into):
backend = mongo_backend_factory(serializer=serializer)
decoded = backend.decode(backend.encode(12))
assert decoded == 12
Expand Down Expand Up @@ -647,9 +645,11 @@ def find_one(self, task_id):
monkeypatch.setattr(MongoBackend, "collection", FakeMongoCollection())

@pytest.mark.parametrize("serializer,result_type,result", [
(s, type(i['result']), i['result']) for i in SUCCESS_RESULT_TEST_DATA for s in i['serializers']]
)
def test_encode_success_results(self, mongo_backend_factory, serializer, result_type, result):
(s, type(i['result']), i['result']) for i in SUCCESS_RESULT_TEST_DATA
for s in i['serializers']]
)
def test_encode_success_results(self, mongo_backend_factory, serializer,
result_type, result):
backend = mongo_backend_factory(serializer=serializer)
backend.store_result(TASK_ID, result, 'SUCCESS')
recovered = backend.get_result(TASK_ID)
Expand All @@ -658,8 +658,10 @@ def test_encode_success_results(self, mongo_backend_factory, serializer, result_
assert type(recovered) == result_type
assert recovered == result

@pytest.mark.parametrize("serializer", ["bson", "pickle", "yaml", "json", "msgpack"])
def test_encode_exception_error_results(self, mongo_backend_factory, serializer):
@pytest.mark.parametrize("serializer",
["bson", "pickle", "yaml", "json", "msgpack"])
def test_encode_exception_error_results(self, mongo_backend_factory,
serializer):
backend = mongo_backend_factory(serializer=serializer)
exception = Exception("Basic Exception")
backend.store_result(TASK_ID, exception, 'FAILURE')
Expand Down

0 comments on commit 465d267

Please sign in to comment.