]>
git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_clib.py
1 """Tests for distutils.command.build_clib."""
6 from test
.test_support
import run_unittest
8 from distutils
.command
.build_clib
import build_clib
9 from distutils
.errors
import DistutilsSetupError
10 from distutils
.tests
import support
11 from distutils
.spawn
import find_executable
13 class BuildCLibTestCase(support
.TempdirManager
,
14 support
.LoggingSilencer
,
17 def test_check_library_dist(self
):
18 pkg_dir
, dist
= self
.create_dist()
19 cmd
= build_clib(dist
)
21 # 'libraries' option must be a list
22 self
.assertRaises(DistutilsSetupError
, cmd
.check_library_list
, 'foo')
24 # each element of 'libraries' must a 2-tuple
25 self
.assertRaises(DistutilsSetupError
, cmd
.check_library_list
,
28 # first element of each tuple in 'libraries'
29 # must be a string (the library name)
30 self
.assertRaises(DistutilsSetupError
, cmd
.check_library_list
,
31 [(1, 'foo1'), ('name', 'foo2')])
33 # library name may not contain directory separators
34 self
.assertRaises(DistutilsSetupError
, cmd
.check_library_list
,
36 ('another/name', 'foo2')])
38 # second element of each tuple must be a dictionary (build info)
39 self
.assertRaises(DistutilsSetupError
, cmd
.check_library_list
,
44 libs
= [('name', {}), ('name', {'ok': 'good'})]
45 cmd
.check_library_list(libs
)
47 def test_get_source_files(self
):
48 pkg_dir
, dist
= self
.create_dist()
49 cmd
= build_clib(dist
)
51 # "in 'libraries' option 'sources' must be present and must be
52 # a list of source filenames
53 cmd
.libraries
= [('name', {})]
54 self
.assertRaises(DistutilsSetupError
, cmd
.get_source_files
)
56 cmd
.libraries
= [('name', {'sources': 1})]
57 self
.assertRaises(DistutilsSetupError
, cmd
.get_source_files
)
59 cmd
.libraries
= [('name', {'sources': ['a', 'b']})]
60 self
.assertEqual(cmd
.get_source_files(), ['a', 'b'])
62 cmd
.libraries
= [('name', {'sources': ('a', 'b')})]
63 self
.assertEqual(cmd
.get_source_files(), ['a', 'b'])
65 cmd
.libraries
= [('name', {'sources': ('a', 'b')}),
66 ('name2', {'sources': ['c', 'd']})]
67 self
.assertEqual(cmd
.get_source_files(), ['a', 'b', 'c', 'd'])
69 def test_build_libraries(self
):
71 pkg_dir
, dist
= self
.create_dist()
72 cmd
= build_clib(dist
)
74 def compile(*args
, **kw
):
76 create_static_lib
= compile
78 cmd
.compiler
= FakeCompiler()
80 # build_libraries is also doing a bit of typoe checking
81 lib
= [('name', {'sources': 'notvalid'})]
82 self
.assertRaises(DistutilsSetupError
, cmd
.build_libraries
, lib
)
84 lib
= [('name', {'sources': list()})]
85 cmd
.build_libraries(lib
)
87 lib
= [('name', {'sources': tuple()})]
88 cmd
.build_libraries(lib
)
90 def test_finalize_options(self
):
91 pkg_dir
, dist
= self
.create_dist()
92 cmd
= build_clib(dist
)
94 cmd
.include_dirs
= 'one-dir'
95 cmd
.finalize_options()
96 self
.assertEqual(cmd
.include_dirs
, ['one-dir'])
98 cmd
.include_dirs
= None
99 cmd
.finalize_options()
100 self
.assertEqual(cmd
.include_dirs
, [])
102 cmd
.distribution
.libraries
= 'WONTWORK'
103 self
.assertRaises(DistutilsSetupError
, cmd
.finalize_options
)
106 # can't test on windows
107 if sys
.platform
== 'win32':
110 pkg_dir
, dist
= self
.create_dist()
111 cmd
= build_clib(dist
)
113 foo_c
= os
.path
.join(pkg_dir
, 'foo.c')
114 self
.write_file(foo_c
, 'int main(void) { return 1;}\n')
115 cmd
.libraries
= [('foo', {'sources': [foo_c
]})]
117 build_temp
= os
.path
.join(pkg_dir
, 'build')
119 cmd
.build_temp
= build_temp
120 cmd
.build_clib
= build_temp
122 # before we run the command, we want to make sure
123 # all commands are present on the system
124 # by creating a compiler and checking its executables
125 from distutils
.ccompiler
import new_compiler
, customize_compiler
127 compiler
= new_compiler()
128 customize_compiler(compiler
)
129 for ccmd
in compiler
.executables
.values():
132 if find_executable(ccmd
[0]) is None:
138 # let's check the result
139 self
.assertTrue('libfoo.a' in os
.listdir(build_temp
))
142 return unittest
.makeSuite(BuildCLibTestCase
)
144 if __name__
== "__main__":
145 run_unittest(test_suite())