66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
|
|
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()
|
|
|