summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Hupp <adam@hupp.org>2020-11-06 10:39:10 -0800
committerAdam Hupp <adam@hupp.org>2020-11-06 10:39:10 -0800
commit77b8cbea6ceffecb4cbc471d1e8fa22843389439 (patch)
tree98ed14f0598fd626c1948c9b3c7214cddf15917b
parent2a755bed47e654d353f002eb2ee19820dc21d53a (diff)
downloadpython-magic-77b8cbea6ceffecb4cbc471d1e8fa22843389439.tar.gz
Handle libmagic versions that don't support MAGIC_EXTENSION
extension support was added to libmagic in 2015 in 9190a18d09f25fb0ca6abe1fcbdba780f5077e45. This change: - updates the test to handle various verions that return garbage / empty string.s - throws an exception in magic.Magic if extension support is requested and we know its not supported.
-rw-r--r--magic.py4
-rwxr-xr-xtest/test.py15
2 files changed, 14 insertions, 5 deletions
diff --git a/magic.py b/magic.py
index 773e4ae..aab7987 100644
--- a/magic.py
+++ b/magic.py
@@ -70,6 +70,10 @@ class Magic:
magic_load(self.cookie, magic_file)
+ # MAGIC_EXTENSION was added in 523 or 524, so bail if
+ # it doesn't appear to be available
+ if extension and (not _has_version or version() < 524):
+ raise NotImplementedError('MAGIC_EXTENSION is not supported in this version of libmagic')
# For https://github.com/ahupp/python-magic/issues/190
# libmagic has fixed internal limits that some files exceed, causing
diff --git a/test/test.py b/test/test.py
index 15a4115..eb5af89 100755
--- a/test/test.py
+++ b/test/test.py
@@ -112,11 +112,16 @@ class MagicTest(unittest.TestCase):
del os.environ['TZ']
def test_extension(self):
- m = magic.Magic(extension=True)
- self.assert_values(m, {
- 'test.gz': 'gz/tgz/tpz/zabw/svgz',
- 'name_use.jpg': 'jpeg/jpg/jpe/jfif',
- })
+ try:
+ m = magic.Magic(extension=True)
+ self.assert_values(m, {
+ # some versions return '' for the extensions of a gz file,
+ # including w/ the command line. Who knows...
+ 'test.gz': ('gz/tgz/tpz/zabw/svgz', '', '???'),
+ 'name_use.jpg': 'jpeg/jpg/jpe/jfif',
+ })
+ except NotImplementedError:
+ self.skipTest('MAGIC_EXTENSION not supported in this version')
def test_unicode_result_nonraw(self):
m = magic.Magic(raw=False)