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

test_install_lib.py (3308B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\distutils\tests\test_install_lib.py
      2 import os
      3 import sys
      4 import unittest
      5 from distutils.command.install_lib import install_lib
      6 from distutils.extension import Extension
      7 from distutils.tests import support
      8 from distutils.errors import DistutilsOptionError
      9 
     10 class InstallLibTestCase(support.TempdirManager, support.LoggingSilencer, support.EnvironGuard, unittest.TestCase):
     11 
     12     def test_finalize_options(self):
     13         pkg_dir, dist = self.create_dist()
     14         cmd = install_lib(dist)
     15         cmd.finalize_options()
     16         self.assertEqual(cmd.compile, 1)
     17         self.assertEqual(cmd.optimize, 0)
     18         cmd.optimize = 'foo'
     19         self.assertRaises(DistutilsOptionError, cmd.finalize_options)
     20         cmd.optimize = '4'
     21         self.assertRaises(DistutilsOptionError, cmd.finalize_options)
     22         cmd.optimize = '2'
     23         cmd.finalize_options()
     24         self.assertEqual(cmd.optimize, 2)
     25 
     26     def _setup_byte_compile(self):
     27         pkg_dir, dist = self.create_dist()
     28         cmd = install_lib(dist)
     29         cmd.compile = cmd.optimize = 1
     30         f = os.path.join(pkg_dir, 'foo.py')
     31         self.write_file(f, '# python file')
     32         cmd.byte_compile([f])
     33         return pkg_dir
     34 
     35     @unittest.skipIf(sys.dont_write_bytecode, 'byte-compile not enabled')
     36     def test_byte_compile(self):
     37         pkg_dir = self._setup_byte_compile()
     38         if sys.flags.optimize < 1:
     39             self.assertTrue(os.path.exists(os.path.join(pkg_dir, 'foo.pyc')))
     40         else:
     41             self.assertTrue(os.path.exists(os.path.join(pkg_dir, 'foo.pyo')))
     42 
     43     def test_get_outputs(self):
     44         pkg_dir, dist = self.create_dist()
     45         cmd = install_lib(dist)
     46         cmd.compile = cmd.optimize = 1
     47         cmd.install_dir = pkg_dir
     48         f = os.path.join(pkg_dir, 'foo.py')
     49         self.write_file(f, '# python file')
     50         cmd.distribution.py_modules = [pkg_dir]
     51         cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
     52         cmd.distribution.packages = [pkg_dir]
     53         cmd.distribution.script_name = 'setup.py'
     54         self.assertTrue(len(cmd.get_outputs()) >= 2)
     55 
     56     def test_get_inputs(self):
     57         pkg_dir, dist = self.create_dist()
     58         cmd = install_lib(dist)
     59         cmd.compile = cmd.optimize = 1
     60         cmd.install_dir = pkg_dir
     61         f = os.path.join(pkg_dir, 'foo.py')
     62         self.write_file(f, '# python file')
     63         cmd.distribution.py_modules = [pkg_dir]
     64         cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
     65         cmd.distribution.packages = [pkg_dir]
     66         cmd.distribution.script_name = 'setup.py'
     67         self.assertEqual(len(cmd.get_inputs()), 2)
     68 
     69     def test_dont_write_bytecode(self):
     70         pkg_dir, dist = self.create_dist()
     71         cmd = install_lib(dist)
     72         cmd.compile = 1
     73         cmd.optimize = 1
     74         old_dont_write_bytecode = sys.dont_write_bytecode
     75         sys.dont_write_bytecode = True
     76         try:
     77             cmd.byte_compile([])
     78         finally:
     79             sys.dont_write_bytecode = old_dont_write_bytecode
     80 
     81         self.assertTrue('byte-compiling is disabled' in self.logs[0][1])
     82 
     83 
     84 def test_suite():
     85     return unittest.makeSuite(InstallLibTestCase)
     86 
     87 
     88 if __name__ == '__main__':
     89     unittest.main(defaultTest='test_suite')