mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
more build_clib cleanup + test coverage
This commit is contained in:
parent
b04a05709d
commit
ccf608c94c
2 changed files with 60 additions and 4 deletions
|
@ -86,7 +86,7 @@ class build_clib (Command):
|
||||||
|
|
||||||
if self.include_dirs is None:
|
if self.include_dirs is None:
|
||||||
self.include_dirs = self.distribution.include_dirs or []
|
self.include_dirs = self.distribution.include_dirs or []
|
||||||
if type(self.include_dirs) is StringType:
|
if isinstance(self.include_dirs, str):
|
||||||
self.include_dirs = string.split(self.include_dirs,
|
self.include_dirs = string.split(self.include_dirs,
|
||||||
os.pathsep)
|
os.pathsep)
|
||||||
|
|
||||||
|
@ -170,8 +170,7 @@ class build_clib (Command):
|
||||||
filenames = []
|
filenames = []
|
||||||
for (lib_name, build_info) in self.libraries:
|
for (lib_name, build_info) in self.libraries:
|
||||||
sources = build_info.get('sources')
|
sources = build_info.get('sources')
|
||||||
if (sources is None or
|
if sources is None or not isinstance(sources, (list, tuple)):
|
||||||
type(sources) not in (ListType, TupleType) ):
|
|
||||||
raise DistutilsSetupError, \
|
raise DistutilsSetupError, \
|
||||||
("in 'libraries' option (library '%s'), "
|
("in 'libraries' option (library '%s'), "
|
||||||
"'sources' must be present and must be "
|
"'sources' must be present and must be "
|
||||||
|
@ -183,7 +182,7 @@ class build_clib (Command):
|
||||||
def build_libraries (self, libraries):
|
def build_libraries (self, libraries):
|
||||||
for (lib_name, build_info) in libraries:
|
for (lib_name, build_info) in libraries:
|
||||||
sources = build_info.get('sources')
|
sources = build_info.get('sources')
|
||||||
if sources is None or type(sources) not in (ListType, TupleType):
|
if sources is None or not isinstance(sources, (list, tuple)):
|
||||||
raise DistutilsSetupError, \
|
raise DistutilsSetupError, \
|
||||||
("in 'libraries' option (library '%s'), " +
|
("in 'libraries' option (library '%s'), " +
|
||||||
"'sources' must be present and must be " +
|
"'sources' must be present and must be " +
|
||||||
|
|
|
@ -39,6 +39,63 @@ class BuildCLibTestCase(support.TempdirManager,
|
||||||
libs = [('name', {}), ('name', {'ok': 'good'})]
|
libs = [('name', {}), ('name', {'ok': 'good'})]
|
||||||
cmd.check_library_list(libs)
|
cmd.check_library_list(libs)
|
||||||
|
|
||||||
|
def test_get_source_files(self):
|
||||||
|
pkg_dir, dist = self.create_dist()
|
||||||
|
cmd = build_clib(dist)
|
||||||
|
|
||||||
|
# "in 'libraries' option 'sources' must be present and must be
|
||||||
|
# a list of source filenames
|
||||||
|
cmd.libraries = [('name', {})]
|
||||||
|
self.assertRaises(DistutilsSetupError, cmd.get_source_files)
|
||||||
|
|
||||||
|
cmd.libraries = [('name', {'sources': 1})]
|
||||||
|
self.assertRaises(DistutilsSetupError, cmd.get_source_files)
|
||||||
|
|
||||||
|
cmd.libraries = [('name', {'sources': ['a', 'b']})]
|
||||||
|
self.assertEquals(cmd.get_source_files(), ['a', 'b'])
|
||||||
|
|
||||||
|
cmd.libraries = [('name', {'sources': ('a', 'b')})]
|
||||||
|
self.assertEquals(cmd.get_source_files(), ['a', 'b'])
|
||||||
|
|
||||||
|
cmd.libraries = [('name', {'sources': ('a', 'b')}),
|
||||||
|
('name2', {'sources': ['c', 'd']})]
|
||||||
|
self.assertEquals(cmd.get_source_files(), ['a', 'b', 'c', 'd'])
|
||||||
|
|
||||||
|
def test_build_libraries(self):
|
||||||
|
|
||||||
|
pkg_dir, dist = self.create_dist()
|
||||||
|
cmd = build_clib(dist)
|
||||||
|
class FakeCompiler:
|
||||||
|
def compile(*args, **kw):
|
||||||
|
pass
|
||||||
|
create_static_lib = compile
|
||||||
|
|
||||||
|
cmd.compiler = FakeCompiler()
|
||||||
|
|
||||||
|
# build_libraries is also doing a bit of typoe checking
|
||||||
|
lib = [('name', {'sources': 'notvalid'})]
|
||||||
|
self.assertRaises(DistutilsSetupError, cmd.build_libraries, lib)
|
||||||
|
|
||||||
|
lib = [('name', {'sources': list()})]
|
||||||
|
cmd.build_libraries(lib)
|
||||||
|
|
||||||
|
lib = [('name', {'sources': tuple()})]
|
||||||
|
cmd.build_libraries(lib)
|
||||||
|
|
||||||
|
def test_finalize_options(self):
|
||||||
|
pkg_dir, dist = self.create_dist()
|
||||||
|
cmd = build_clib(dist)
|
||||||
|
|
||||||
|
cmd.include_dirs = 'one-dir'
|
||||||
|
cmd.finalize_options()
|
||||||
|
self.assertEquals(cmd.include_dirs, ['one-dir'])
|
||||||
|
|
||||||
|
cmd.include_dirs = None
|
||||||
|
cmd.finalize_options()
|
||||||
|
self.assertEquals(cmd.include_dirs, [])
|
||||||
|
|
||||||
|
cmd.distribution.libraries = 'WONTWORK'
|
||||||
|
self.assertRaises(DistutilsSetupError, cmd.finalize_options)
|
||||||
|
|
||||||
def test_suite():
|
def test_suite():
|
||||||
return unittest.makeSuite(BuildCLibTestCase)
|
return unittest.makeSuite(BuildCLibTestCase)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue