summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Woods <public@hakjoon.com>2019-02-08 06:26:15 -0500
committerOmer Katz <omer.drow@gmail.com>2019-02-08 13:26:15 +0200
commit2415a647765f98fba3eaa41ea8a361837f8bd530 (patch)
treefec12dcb446ac1d8d275eebcfa3d62164fad2591
parentb4be5cf2e7e5ca538246e254bc6ebac5d6c5f477 (diff)
downloadkombu-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.py12
-rw-r--r--t/unit/test_compression.py15
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