diff options
author | Adam Hupp <adam@hupp.org> | 2020-11-06 10:39:10 -0800 |
---|---|---|
committer | Adam Hupp <adam@hupp.org> | 2020-11-06 10:39:10 -0800 |
commit | 77b8cbea6ceffecb4cbc471d1e8fa22843389439 (patch) | |
tree | 98ed14f0598fd626c1948c9b3c7214cddf15917b | |
parent | 2a755bed47e654d353f002eb2ee19820dc21d53a (diff) | |
download | python-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.py | 4 | ||||
-rwxr-xr-x | test/test.py | 15 |
2 files changed, 14 insertions, 5 deletions
@@ -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) |