NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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')