import unittest import encodings import encodings.aliases from modulegraph import util import sys try: from io import BytesIO except ImportError: from cStringIO import StringIO as BytesIO class TestUtil (unittest.TestCase): def test_imp_find_module(self): fn = util.imp_find_module('encodings.aliases')[1] self.assertTrue(encodings.aliases.__file__.startswith(fn)) def test_imp_walk(self): imps = list(util.imp_walk('encodings.aliases')) self.assertEqual(len(imps), 2) self.assertEqual(imps[0][0], 'encodings') self.assertTrue(encodings.__file__.startswith(imps[0][1][1])) self.assertEqual(imps[1][0], 'aliases') self.assertTrue(encodings.aliases.__file__.startswith(imps[1][1][1])) # Close all files, avoid warning by unittest for i in imps: if i[1][0] is not None: i[1][0].close() def test_guess_encoding(self): fp = BytesIO(b"# coding: utf-8") self.assertEqual(util.guess_encoding(fp), "utf-8") fp = BytesIO(b"\n# coding: utf-8") self.assertEqual(util.guess_encoding(fp), "utf-8") fp = BytesIO(b"# coding: latin-1") self.assertEqual(util.guess_encoding(fp), "latin-1") fp = BytesIO(b"\n# coding: latin-1") self.assertEqual(util.guess_encoding(fp), "latin-1") fp = BytesIO(b"#!/usr/bin/env/python\n# vim: set fileencoding=latin-1 :") self.assertEqual(util.guess_encoding(fp), "latin-1") fp = BytesIO(b"\n\n\n# coding: latin-1") if sys.version_info[0] == 2: self.assertEqual(util.guess_encoding(fp), "ascii") else: self.assertEqual(util.guess_encoding(fp), "utf-8") del fp if __name__ == "__main__": unittest.main()