]> granicus.if.org Git - python/commitdiff
more build_clib cleanup + test coverage
authorTarek Ziadé <ziade.tarek@gmail.com>
Wed, 6 May 2009 08:05:47 +0000 (08:05 +0000)
committerTarek Ziadé <ziade.tarek@gmail.com>
Wed, 6 May 2009 08:05:47 +0000 (08:05 +0000)
Lib/distutils/command/build_clib.py
Lib/distutils/tests/test_build_clib.py

index 18415cfcf3846bc49e5497bffda4fc396bacf5a5..447ea94989a990df39c192c4d9ef5472418621ea 100644 (file)
@@ -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 " +
index 36c07b7953437c9263ccd95f5324f35cc354fb90..7374c4956afefbc4f9fdf89da06cb3dd4b7084d1 100644 (file)
@@ -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)