def testBinaryImport(self): zip_io = StringIO() zip_f = zipfile.ZipFile(zip_io, 'w') zip_f.writestr('testa/a.so', '') zip_f.close() self.assertRaises(SystemError, CompressImporter, zip_f) temp_path = tempfile.mkdtemp(prefix='tmp_pyodps') lib_path = os.path.join(temp_path, 'mylib') os.makedirs(lib_path) lib_dict = dict() try: six_path = os.path.join( os.path.dirname(os.path.abspath(six.__file__)), 'six.py') shutil.copy(six_path, os.path.join(lib_path, 'five.py')) dummy_bin = open(os.path.join(lib_path, 'dummy.so'), 'w') dummy_bin.close() lib_files = ['five.py', 'dummy.so'] lib_dict = dict((os.path.join(lib_path, fn), open(os.path.join(lib_path, fn), 'r')) for fn in lib_files) importer.ALLOW_BINARY = False self.assertRaises(SystemError, CompressImporter, lib_dict) importer.ALLOW_BINARY = True sys.meta_path.append(CompressImporter(lib_dict)) import five self.assertEqual(list(to_binary('abc')), list(five.binary_type(to_binary('abc')))) finally: [f.close() for f in six.itervalues(lib_dict)] shutil.rmtree(temp_path)
def testRealImport(self): six_path = os.path.join(os.path.dirname(os.path.abspath(six.__file__)), 'six.py') zip_io = StringIO() zip_f = zipfile.ZipFile(zip_io, 'w') zip_f.write(six_path, arcname='mylib/five.py') zip_f.close() zip_io.seek(0) zip_f = zipfile.ZipFile(zip_io) sys.meta_path.append(CompressImporter(zip_f)) import five self.assertEqual(list(to_binary('abc')), list(five.binary_type(to_binary('abc'))))
def testRealImport(self): raw_meta_path = sys.meta_path six_path = os.path.join(os.path.dirname(os.path.abspath(six.__file__)), 'six.py') zip_io = StringIO() zip_f = zipfile.ZipFile(zip_io, 'w') zip_f.write(six_path, arcname='mylib/five.py') zip_f.close() zip_io.seek(0) zip_f = zipfile.ZipFile(zip_io) sys.meta_path.append(CompressImporter(zip_f)) try: import five self.assertEqual(list(to_binary('abc')), list(five.binary_type(to_binary('abc')))) finally: sys.meta_path = raw_meta_path