test_build_py.py (3512B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\distutils\tests\test_build_py.py 2 import os 3 import sys 4 import StringIO 5 import unittest 6 from distutils.command.build_py import build_py 7 from distutils.core import Distribution 8 from distutils.errors import DistutilsFileError 9 from distutils.tests import support 10 11 class BuildPyTestCase(support.TempdirManager, support.LoggingSilencer, unittest.TestCase): 12 13 def _setup_package_data(self): 14 sources = self.mkdtemp() 15 f = open(os.path.join(sources, '__init__.py'), 'w') 16 try: 17 f.write('# Pretend this is a package.') 18 finally: 19 f.close() 20 21 f = open(os.path.join(sources, 'README.txt'), 'w') 22 try: 23 f.write('Info about this package') 24 finally: 25 f.close() 26 27 destination = self.mkdtemp() 28 dist = Distribution({'packages': ['pkg'], 29 'package_dir': {'pkg': sources}}) 30 dist.script_name = os.path.join(sources, 'setup.py') 31 dist.command_obj['build'] = support.DummyCommand(force=0, build_lib=destination) 32 dist.packages = ['pkg'] 33 dist.package_data = {'pkg': ['README.txt']} 34 dist.package_dir = {'pkg': sources} 35 cmd = build_py(dist) 36 cmd.compile = 1 37 cmd.ensure_finalized() 38 self.assertEqual(cmd.package_data, dist.package_data) 39 cmd.run() 40 self.assertEqual(len(cmd.get_outputs()), 3) 41 pkgdest = os.path.join(destination, 'pkg') 42 files = os.listdir(pkgdest) 43 return files 44 45 def test_package_data(self): 46 files = self._setup_package_data() 47 self.assertTrue('__init__.py' in files) 48 self.assertTrue('README.txt' in files) 49 50 @unittest.skipIf(sys.flags.optimize >= 2, 'pyc files are not written with -O2 and above') 51 def test_package_data_pyc(self): 52 files = self._setup_package_data() 53 self.assertTrue('__init__.pyc' in files) 54 55 def test_empty_package_dir(self): 56 cwd = os.getcwd() 57 sources = self.mkdtemp() 58 open(os.path.join(sources, '__init__.py'), 'w').close() 59 testdir = os.path.join(sources, 'doc') 60 os.mkdir(testdir) 61 open(os.path.join(testdir, 'testfile'), 'w').close() 62 os.chdir(sources) 63 old_stdout = sys.stdout 64 sys.stdout = StringIO.StringIO() 65 try: 66 dist = Distribution({'packages': ['pkg'], 67 'package_dir': {'pkg': ''}, 68 'package_data': {'pkg': ['doc/*']}}) 69 dist.script_name = os.path.join(sources, 'setup.py') 70 dist.script_args = ['build'] 71 dist.parse_command_line() 72 try: 73 dist.run_commands() 74 except DistutilsFileError: 75 self.fail("failed package_data test when package_dir is ''") 76 77 finally: 78 os.chdir(cwd) 79 sys.stdout = old_stdout 80 81 def test_dont_write_bytecode(self): 82 pkg_dir, dist = self.create_dist() 83 cmd = build_py(dist) 84 cmd.compile = 1 85 cmd.optimize = 1 86 old_dont_write_bytecode = sys.dont_write_bytecode 87 sys.dont_write_bytecode = True 88 try: 89 cmd.byte_compile([]) 90 finally: 91 sys.dont_write_bytecode = old_dont_write_bytecode 92 93 self.assertTrue('byte-compiling is disabled' in self.logs[0][1]) 94 95 96 def test_suite(): 97 return unittest.makeSuite(BuildPyTestCase) 98 99 100 if __name__ == '__main__': 101 unittest.main(defaultTest='test_suite')