diff options
author | Patrick Woods <public@hakjoon.com> | 2019-02-08 06:26:15 -0500 |
---|---|---|
committer | Omer Katz <omer.drow@gmail.com> | 2019-02-08 13:26:15 +0200 |
commit | 2415a647765f98fba3eaa41ea8a361837f8bd530 (patch) | |
tree | fec12dcb446ac1d8d275eebcfa3d62164fad2591 | |
parent | b4be5cf2e7e5ca538246e254bc6ebac5d6c5f477 (diff) | |
download | kombu-2415a647765f98fba3eaa41ea8a361837f8bd530.tar.gz |
Restore bz2 import checks in compression.py (#1003)
Removed in #938 due to assumption that it only affected Jython but
the condition can be present in systems built without bz2 support.
-rw-r--r-- | kombu/compression.py | 12 | ||||
-rw-r--r-- | t/unit/test_compression.py | 15 |
2 files changed, 23 insertions, 4 deletions
diff --git a/kombu/compression.py b/kombu/compression.py index 2eeb34cc..48dca347 100644 --- a/kombu/compression.py +++ b/kombu/compression.py @@ -3,7 +3,6 @@ from __future__ import absolute_import, unicode_literals from kombu.utils.encoding import ensure_bytes -import bz2 import zlib try: @@ -82,9 +81,14 @@ register(zlib.compress, zlib.decompress, 'application/x-gzip', aliases=['gzip', 'zlib']) -register(bz2.compress, - bz2.decompress, - 'application/x-bz2', aliases=['bzip2', 'bzip']) +try: + import bz2 +except ImportError: + pass # No bz2 support +else: + register(bz2.compress, + bz2.decompress, + 'application/x-bz2', aliases=['bzip2', 'bzip']) try: import brotli diff --git a/t/unit/test_compression.py b/t/unit/test_compression.py index 1df873d3..972d8268 100644 --- a/t/unit/test_compression.py +++ b/t/unit/test_compression.py @@ -2,6 +2,10 @@ from __future__ import absolute_import, unicode_literals import pytest +import sys + +from case import mock, skip + from kombu import compression @@ -10,6 +14,7 @@ class test_compression: def test_encoders__gzip(self): assert 'application/x-gzip' in compression.encoders() + @skip.unless_module('bz2') def test_encoders__bz2(self): assert 'application/x-bz2' in compression.encoders() @@ -79,3 +84,13 @@ class test_compression: assert text != c d = compression.decompress(c, ctype) assert d == text + + @mock.mask_modules('bz2') + def test_no_bz2(self): + c = sys.modules.pop('kombu.compression') + try: + import kombu.compression + assert not hasattr(kombu.compression, 'bz2') + finally: + if c is not None: + sys.modules['kombu.compression'] = c |