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