Added python-magic for smarter MIME type detection and a new document field: file_mime_encoding

This commit is contained in:
Roberto Rosario
2011-02-10 19:01:55 -04:00
parent f7b560853b
commit 07ac315ac8
14 changed files with 596 additions and 4 deletions

View File

@@ -0,0 +1,65 @@
import os.path
import unittest
import random
from StringIO import StringIO
from os import path
from magic import Magic, MagicException
testfile = [
("magic.pyc", "python 2.4 byte-compiled", "application/octet-stream"),
("test.pdf", "PDF document, version 1.2", "application/pdf"),
("test.gz", 'gzip compressed data, was "test", from Unix, last modified: '
'Sat Jun 28 18:32:52 2008', "application/x-gzip"),
("text.txt", "ASCII text", "text/plain"),
]
testFileEncoding = [('text-iso8859-1.txt', 'iso-8859-1')]
class TestMagic(unittest.TestCase):
mime = False
def setUp(self):
self.m = Magic(mime=self.mime)
def testFileTypes(self):
for filename, desc, mime in testfile:
filename = path.join(path.dirname(__file__),
"testdata",
filename)
if self.mime:
target = mime
else:
target = desc
self.assertEqual(target, self.m.from_buffer(open(filename).read(1024)))
self.assertEqual(target, self.m.from_file(filename), filename)
def testErrors(self):
self.assertRaises(IOError, self.m.from_file, "nonexistent")
self.assertRaises(MagicException, Magic, magic_file="noneexistent")
os.environ['MAGIC'] = '/nonexistetn'
self.assertRaises(MagicException, Magic)
del os.environ['MAGIC']
class TestMagicMime(TestMagic):
mime = True
class TestMagicMimeEncoding(unittest.TestCase):
def setUp(self):
self.m = Magic(mime_encoding=True)
def testFileEncoding(self):
for filename, encoding in testFileEncoding:
filename = path.join(path.dirname(__file__),
"testdata",
filename)
self.assertEqual(encoding, self.m.from_buffer(open(filename).read(1024)))
self.assertEqual(encoding, self.m.from_file(filename), filename)
if __name__ == '__main__':
unittest.main()