1cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport unittest 2cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport encodings 3cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport encodings.aliases 4cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom modulegraph import util 5cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport sys 6cef7893435aa41160dd1255c43cb8498279738ccChris Craik 7cef7893435aa41160dd1255c43cb8498279738ccChris Craiktry: 8cef7893435aa41160dd1255c43cb8498279738ccChris Craik from io import BytesIO 9cef7893435aa41160dd1255c43cb8498279738ccChris Craikexcept ImportError: 10cef7893435aa41160dd1255c43cb8498279738ccChris Craik from cStringIO import StringIO as BytesIO 11cef7893435aa41160dd1255c43cb8498279738ccChris Craik 12cef7893435aa41160dd1255c43cb8498279738ccChris Craikclass TestUtil (unittest.TestCase): 13cef7893435aa41160dd1255c43cb8498279738ccChris Craik def test_imp_find_module(self): 14cef7893435aa41160dd1255c43cb8498279738ccChris Craik fn = util.imp_find_module('encodings.aliases')[1] 15cef7893435aa41160dd1255c43cb8498279738ccChris Craik self.assertTrue(encodings.aliases.__file__.startswith(fn)) 16cef7893435aa41160dd1255c43cb8498279738ccChris Craik 17cef7893435aa41160dd1255c43cb8498279738ccChris Craik def test_imp_walk(self): 18cef7893435aa41160dd1255c43cb8498279738ccChris Craik imps = list(util.imp_walk('encodings.aliases')) 19cef7893435aa41160dd1255c43cb8498279738ccChris Craik self.assertEqual(len(imps), 2) 20cef7893435aa41160dd1255c43cb8498279738ccChris Craik 21cef7893435aa41160dd1255c43cb8498279738ccChris Craik self.assertEqual(imps[0][0], 'encodings') 22cef7893435aa41160dd1255c43cb8498279738ccChris Craik self.assertTrue(encodings.__file__.startswith(imps[0][1][1])) 23cef7893435aa41160dd1255c43cb8498279738ccChris Craik 24cef7893435aa41160dd1255c43cb8498279738ccChris Craik self.assertEqual(imps[1][0], 'aliases') 25cef7893435aa41160dd1255c43cb8498279738ccChris Craik self.assertTrue(encodings.aliases.__file__.startswith(imps[1][1][1])) 26cef7893435aa41160dd1255c43cb8498279738ccChris Craik 27cef7893435aa41160dd1255c43cb8498279738ccChris Craik # Close all files, avoid warning by unittest 28cef7893435aa41160dd1255c43cb8498279738ccChris Craik for i in imps: 29cef7893435aa41160dd1255c43cb8498279738ccChris Craik if i[1][0] is not None: 30cef7893435aa41160dd1255c43cb8498279738ccChris Craik i[1][0].close() 31cef7893435aa41160dd1255c43cb8498279738ccChris Craik 32cef7893435aa41160dd1255c43cb8498279738ccChris Craik 33cef7893435aa41160dd1255c43cb8498279738ccChris Craik def test_guess_encoding(self): 34cef7893435aa41160dd1255c43cb8498279738ccChris Craik fp = BytesIO(b"# coding: utf-8") 35cef7893435aa41160dd1255c43cb8498279738ccChris Craik self.assertEqual(util.guess_encoding(fp), "utf-8") 36cef7893435aa41160dd1255c43cb8498279738ccChris Craik 37cef7893435aa41160dd1255c43cb8498279738ccChris Craik fp = BytesIO(b"\n# coding: utf-8") 38cef7893435aa41160dd1255c43cb8498279738ccChris Craik self.assertEqual(util.guess_encoding(fp), "utf-8") 39cef7893435aa41160dd1255c43cb8498279738ccChris Craik 40cef7893435aa41160dd1255c43cb8498279738ccChris Craik fp = BytesIO(b"# coding: latin-1") 41cef7893435aa41160dd1255c43cb8498279738ccChris Craik self.assertEqual(util.guess_encoding(fp), "latin-1") 42cef7893435aa41160dd1255c43cb8498279738ccChris Craik 43cef7893435aa41160dd1255c43cb8498279738ccChris Craik fp = BytesIO(b"\n# coding: latin-1") 44cef7893435aa41160dd1255c43cb8498279738ccChris Craik self.assertEqual(util.guess_encoding(fp), "latin-1") 45cef7893435aa41160dd1255c43cb8498279738ccChris Craik 46cef7893435aa41160dd1255c43cb8498279738ccChris Craik fp = BytesIO(b"#!/usr/bin/env/python\n# vim: set fileencoding=latin-1 :") 47cef7893435aa41160dd1255c43cb8498279738ccChris Craik self.assertEqual(util.guess_encoding(fp), "latin-1") 48cef7893435aa41160dd1255c43cb8498279738ccChris Craik 49cef7893435aa41160dd1255c43cb8498279738ccChris Craik fp = BytesIO(b"\n\n\n# coding: latin-1") 50cef7893435aa41160dd1255c43cb8498279738ccChris Craik if sys.version_info[0] == 2: 51cef7893435aa41160dd1255c43cb8498279738ccChris Craik self.assertEqual(util.guess_encoding(fp), "ascii") 52cef7893435aa41160dd1255c43cb8498279738ccChris Craik else: 53cef7893435aa41160dd1255c43cb8498279738ccChris Craik self.assertEqual(util.guess_encoding(fp), "utf-8") 54cef7893435aa41160dd1255c43cb8498279738ccChris Craik 55cef7893435aa41160dd1255c43cb8498279738ccChris Craik del fp 56cef7893435aa41160dd1255c43cb8498279738ccChris Craik 57cef7893435aa41160dd1255c43cb8498279738ccChris Craik 58cef7893435aa41160dd1255c43cb8498279738ccChris Craikif __name__ == "__main__": 59cef7893435aa41160dd1255c43cb8498279738ccChris Craik unittest.main() 60