summaryrefslogtreecommitdiffstats
path: root/Lib/distutils
diff options
context:
space:
mode:
authorTarek Ziadé <ziade.tarek@gmail.com>2009-05-06 08:05:47 (GMT)
committerTarek Ziadé <ziade.tarek@gmail.com>2009-05-06 08:05:47 (GMT)
commitccf608c94c17aeb06c5974489eb33767816f3107 (patch)
tree8da742690058854fef6d1ba7de21c53acd013839 /Lib/distutils
parentb04a05709d381a2630b4693664beac6eee7adee3 (diff)
downloadcpython-ccf608c94c17aeb06c5974489eb33767816f3107.zip
cpython-ccf608c94c17aeb06c5974489eb33767816f3107.tar.gz
cpython-ccf608c94c17aeb06c5974489eb33767816f3107.tar.bz2
more build_clib cleanup + test coverage
Diffstat (limited to 'Lib/distutils')
-rw-r--r--Lib/distutils/command/build_clib.py7
-rw-r--r--Lib/distutils/tests/test_build_clib.py57
2 files changed, 60 insertions, 4 deletions
diff --git a/Lib/distutils/command/build_clib.py b/Lib/distutils/command/build_clib.py
index 18415cf..447ea94 100644
--- a/Lib/distutils/command/build_clib.py
+++ b/Lib/distutils/command/build_clib.py
@@ -86,7 +86,7 @@ class build_clib (Command):
if self.include_dirs is None:
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,
os.pathsep)
@@ -170,8 +170,7 @@ class build_clib (Command):
filenames = []
for (lib_name, build_info) in self.libraries:
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, \
("in 'libraries' option (library '%s'), "
"'sources' must be present and must be "
@@ -183,7 +182,7 @@ class build_clib (Command):
def build_libraries (self, libraries):
for (lib_name, build_info) in libraries:
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, \
("in 'libraries' option (library '%s'), " +
"'sources' must be present and must be " +
diff --git a/Lib/distutils/tests/test_build_clib.py b/Lib/distutils/tests/test_build_clib.py
index 36c07b7..7374c49 100644
--- a/Lib/distutils/tests/test_build_clib.py
+++ b/Lib/distutils/tests/test_build_clib.py
@@ -39,6 +39,63 @@ class BuildCLibTestCase(support.TempdirManager,
libs = [('name', {}), ('name', {'ok': 'good'})]
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():
return unittest.makeSuite(BuildCLibTestCase)