These files are a subset of the python-2.7.2.tgz distribution from python.org. Changed files from PyMod-2.7.2 have been copied into the corresponding directories of this tree, replacing the original files in the distribution. Signed-off-by: daryl.mcdaniel@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13197 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			131 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from test.test_support import run_unittest
 | |
| import unittest
 | |
| import sys
 | |
| import imp
 | |
| import pkgutil
 | |
| import os
 | |
| import os.path
 | |
| import tempfile
 | |
| import shutil
 | |
| import zipfile
 | |
| 
 | |
| 
 | |
| 
 | |
| class PkgutilTests(unittest.TestCase):
 | |
| 
 | |
|     def setUp(self):
 | |
|         self.dirname = tempfile.mkdtemp()
 | |
|         sys.path.insert(0, self.dirname)
 | |
| 
 | |
|     def tearDown(self):
 | |
|         del sys.path[0]
 | |
|         shutil.rmtree(self.dirname)
 | |
| 
 | |
|     def test_getdata_filesys(self):
 | |
|         pkg = 'test_getdata_filesys'
 | |
| 
 | |
|         # Include a LF and a CRLF, to test that binary data is read back
 | |
|         RESOURCE_DATA = 'Hello, world!\nSecond line\r\nThird line'
 | |
| 
 | |
|         # Make a package with some resources
 | |
|         package_dir = os.path.join(self.dirname, pkg)
 | |
|         os.mkdir(package_dir)
 | |
|         # Empty init.py
 | |
|         f = open(os.path.join(package_dir, '__init__.py'), "wb")
 | |
|         f.close()
 | |
|         # Resource files, res.txt, sub/res.txt
 | |
|         f = open(os.path.join(package_dir, 'res.txt'), "wb")
 | |
|         f.write(RESOURCE_DATA)
 | |
|         f.close()
 | |
|         os.mkdir(os.path.join(package_dir, 'sub'))
 | |
|         f = open(os.path.join(package_dir, 'sub', 'res.txt'), "wb")
 | |
|         f.write(RESOURCE_DATA)
 | |
|         f.close()
 | |
| 
 | |
|         # Check we can read the resources
 | |
|         res1 = pkgutil.get_data(pkg, 'res.txt')
 | |
|         self.assertEqual(res1, RESOURCE_DATA)
 | |
|         res2 = pkgutil.get_data(pkg, 'sub/res.txt')
 | |
|         self.assertEqual(res2, RESOURCE_DATA)
 | |
| 
 | |
|         del sys.modules[pkg]
 | |
| 
 | |
|     def test_getdata_zipfile(self):
 | |
|         zip = 'test_getdata_zipfile.zip'
 | |
|         pkg = 'test_getdata_zipfile'
 | |
| 
 | |
|         # Include a LF and a CRLF, to test that binary data is read back
 | |
|         RESOURCE_DATA = 'Hello, world!\nSecond line\r\nThird line'
 | |
| 
 | |
|         # Make a package with some resources
 | |
|         zip_file = os.path.join(self.dirname, zip)
 | |
|         z = zipfile.ZipFile(zip_file, 'w')
 | |
| 
 | |
|         # Empty init.py
 | |
|         z.writestr(pkg + '/__init__.py', "")
 | |
|         # Resource files, res.txt, sub/res.txt
 | |
|         z.writestr(pkg + '/res.txt', RESOURCE_DATA)
 | |
|         z.writestr(pkg + '/sub/res.txt', RESOURCE_DATA)
 | |
|         z.close()
 | |
| 
 | |
|         # Check we can read the resources
 | |
|         sys.path.insert(0, zip_file)
 | |
|         res1 = pkgutil.get_data(pkg, 'res.txt')
 | |
|         self.assertEqual(res1, RESOURCE_DATA)
 | |
|         res2 = pkgutil.get_data(pkg, 'sub/res.txt')
 | |
|         self.assertEqual(res2, RESOURCE_DATA)
 | |
|         del sys.path[0]
 | |
| 
 | |
|         del sys.modules[pkg]
 | |
| 
 | |
| class PkgutilPEP302Tests(unittest.TestCase):
 | |
| 
 | |
|     class MyTestLoader(object):
 | |
|         def load_module(self, fullname):
 | |
|             # Create an empty module
 | |
|             mod = sys.modules.setdefault(fullname, imp.new_module(fullname))
 | |
|             mod.__file__ = "<%s>" % self.__class__.__name__
 | |
|             mod.__loader__ = self
 | |
|             # Make it a package
 | |
|             mod.__path__ = []
 | |
|             # Count how many times the module is reloaded
 | |
|             mod.__dict__['loads'] = mod.__dict__.get('loads',0) + 1
 | |
|             return mod
 | |
| 
 | |
|         def get_data(self, path):
 | |
|             return "Hello, world!"
 | |
| 
 | |
|     class MyTestImporter(object):
 | |
|         def find_module(self, fullname, path=None):
 | |
|             return PkgutilPEP302Tests.MyTestLoader()
 | |
| 
 | |
|     def setUp(self):
 | |
|         sys.meta_path.insert(0, self.MyTestImporter())
 | |
| 
 | |
|     def tearDown(self):
 | |
|         del sys.meta_path[0]
 | |
| 
 | |
|     def test_getdata_pep302(self):
 | |
|         # Use a dummy importer/loader
 | |
|         self.assertEqual(pkgutil.get_data('foo', 'dummy'), "Hello, world!")
 | |
|         del sys.modules['foo']
 | |
| 
 | |
|     def test_alreadyloaded(self):
 | |
|         # Ensure that get_data works without reloading - the "loads" module
 | |
|         # variable in the example loader should count how many times a reload
 | |
|         # occurs.
 | |
|         import foo
 | |
|         self.assertEqual(foo.loads, 1)
 | |
|         self.assertEqual(pkgutil.get_data('foo', 'dummy'), "Hello, world!")
 | |
|         self.assertEqual(foo.loads, 1)
 | |
|         del sys.modules['foo']
 | |
| 
 | |
| def test_main():
 | |
|     run_unittest(PkgutilTests, PkgutilPEP302Tests)
 | |
|     # this is necessary if test is run repeated (like when finding leaks)
 | |
|     import zipimport
 | |
|     zipimport._zip_directory_cache.clear()
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     test_main()
 |