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

test_build_clib.py (3966B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\distutils\tests\test_build_clib.py
      2 import unittest
      3 import os
      4 import sys
      5 from distutils.command.build_clib import build_clib
      6 from distutils.errors import DistutilsSetupError
      7 from distutils.tests import support
      8 from distutils.spawn import find_executable
      9 
     10 class BuildCLibTestCase(support.TempdirManager, support.LoggingSilencer, unittest.TestCase):
     11 
     12     def test_check_library_dist(self):
     13         pkg_dir, dist = self.create_dist()
     14         cmd = build_clib(dist)
     15         self.assertRaises(DistutilsSetupError, cmd.check_library_list, 'foo')
     16         self.assertRaises(DistutilsSetupError, cmd.check_library_list, ['foo1', 'foo2'])
     17         self.assertRaises(DistutilsSetupError, cmd.check_library_list, [(1, 'foo1'), ('name', 'foo2')])
     18         self.assertRaises(DistutilsSetupError, cmd.check_library_list, [('name', 'foo1'), ('another/name', 'foo2')])
     19         self.assertRaises(DistutilsSetupError, cmd.check_library_list, [('name', {}), ('another', 'foo2')])
     20         libs = [('name', {}), ('name', {'ok': 'good'})]
     21         cmd.check_library_list(libs)
     22 
     23     def test_get_source_files(self):
     24         pkg_dir, dist = self.create_dist()
     25         cmd = build_clib(dist)
     26         cmd.libraries = [('name', {})]
     27         self.assertRaises(DistutilsSetupError, cmd.get_source_files)
     28         cmd.libraries = [('name', {'sources': 1})]
     29         self.assertRaises(DistutilsSetupError, cmd.get_source_files)
     30         cmd.libraries = [('name', {'sources': ['a', 'b']})]
     31         self.assertEqual(cmd.get_source_files(), ['a', 'b'])
     32         cmd.libraries = [('name', {'sources': ('a', 'b')})]
     33         self.assertEqual(cmd.get_source_files(), ['a', 'b'])
     34         cmd.libraries = [('name', {'sources': ('a', 'b')}), ('name2', {'sources': ['c', 'd']})]
     35         self.assertEqual(cmd.get_source_files(), ['a',
     36          'b',
     37          'c',
     38          'd'])
     39 
     40     def test_build_libraries(self):
     41         pkg_dir, dist = self.create_dist()
     42         cmd = build_clib(dist)
     43 
     44         class FakeCompiler:
     45 
     46             def compile(*args, **kw):
     47                 pass
     48 
     49             create_static_lib = compile
     50 
     51         cmd.compiler = FakeCompiler()
     52         lib = [('name', {'sources': 'notvalid'})]
     53         self.assertRaises(DistutilsSetupError, cmd.build_libraries, lib)
     54         lib = [('name', {'sources': list()})]
     55         cmd.build_libraries(lib)
     56         lib = [('name', {'sources': tuple()})]
     57         cmd.build_libraries(lib)
     58 
     59     def test_finalize_options(self):
     60         pkg_dir, dist = self.create_dist()
     61         cmd = build_clib(dist)
     62         cmd.include_dirs = 'one-dir'
     63         cmd.finalize_options()
     64         self.assertEqual(cmd.include_dirs, ['one-dir'])
     65         cmd.include_dirs = None
     66         cmd.finalize_options()
     67         self.assertEqual(cmd.include_dirs, [])
     68         cmd.distribution.libraries = 'WONTWORK'
     69         self.assertRaises(DistutilsSetupError, cmd.finalize_options)
     70 
     71     def test_run(self):
     72         if sys.platform == 'win32':
     73             return
     74         pkg_dir, dist = self.create_dist()
     75         cmd = build_clib(dist)
     76         foo_c = os.path.join(pkg_dir, 'foo.c')
     77         self.write_file(foo_c, 'int main(void) { return 1;}\n')
     78         cmd.libraries = [('foo', {'sources': [foo_c]})]
     79         build_temp = os.path.join(pkg_dir, 'build')
     80         os.mkdir(build_temp)
     81         cmd.build_temp = build_temp
     82         cmd.build_clib = build_temp
     83         from distutils.ccompiler import new_compiler, customize_compiler
     84         compiler = new_compiler()
     85         customize_compiler(compiler)
     86         for ccmd in compiler.executables.values():
     87             if ccmd is None:
     88                 continue
     89             if find_executable(ccmd[0]) is None:
     90                 return
     91 
     92         cmd.run()
     93         self.assertTrue('libfoo.a' in os.listdir(build_temp))
     94 
     95 
     96 def test_suite():
     97     return unittest.makeSuite(BuildCLibTestCase)
     98 
     99 
    100 if __name__ == '__main__':
    101     unittest.main(defaultTest='test_suite')