def TestOneInput(input_bytes): # We need to make the file an absolute path testfile_path = os.path.join(os.getcwd(), "testfile.tmp") with open(testfile_path, "wb") as f: f.write(input_bytes) # Test basic Mime API Mime.get_type2(testfile_path) Mime.get_type_by_contents(testfile_path) Mime.get_type_by_data(input_bytes) # Test GlobDB globs = Mime.GlobDB() try: globs.merge_file(testfile_path) globs.merge_file(testfile_path) except UnicodeError as e: pass except ValueError as e: if ("not enough values to unpack" in str(e) or "invalid literal for int" in str(e)): pass else: raise e # Test MagicDB magic = Mime.MagicDB() try: magic.merge_file(testfile_path) magic.finalise() except UnicodeDecodeError: pass except (OSError, ValueError) as e: msg = str(e) if ("Not a MIME magic file" in msg or "Malformed section heading" in msg): pass else: raise e # Cleanup os.remove(testfile_path)
def test_parsing(self): p1 = os.path.join(self.tmpdir, 'globs2a') with open(p1, 'w') as f: f.write(resources.mime_globs2_a) p2 = os.path.join(self.tmpdir, 'globs2b') with open(p2, 'w') as f: f.write(resources.mime_globs2_b) globs = Mime.GlobDB() globs.merge_file(p1) globs.merge_file(p2) ag = globs.allglobs self.assertEqual(ag[_l('text', 'x-diff')], set([(55, '*.patch', ()), (50, '*.diff', ())])) self.assertEqual(ag[_l('text', 'x-c++src')], set([(50, '*.C', ('cs', ))])) self.assertEqual(ag[_l('text', 'x-readme')], set([(20, 'RDME', ('cs', ))])) assert _l('text', 'x-python') not in ag, ag
def setUp(self): self.globs = Mime.GlobDB() self.globs.allglobs = self.allglobs self.globs.finalise()