[Python-checkins] r73445 - in python/trunk/Lib/distutils: ccompiler.py tests/test_ccompiler.py

tarek.ziade python-checkins at python.org
Tue Jun 16 10:31:01 CEST 2009


Author: tarek.ziade
Date: Tue Jun 16 10:31:01 2009
New Revision: 73445

Log:
starting distutils.ccompiler test coverage and cleanup

Added:
   python/trunk/Lib/distutils/tests/test_ccompiler.py   (contents, props changed)
Modified:
   python/trunk/Lib/distutils/ccompiler.py

Modified: python/trunk/Lib/distutils/ccompiler.py
==============================================================================
--- python/trunk/Lib/distutils/ccompiler.py	(original)
+++ python/trunk/Lib/distutils/ccompiler.py	Tue Jun 16 10:31:01 2009
@@ -1217,27 +1217,27 @@
 
     return pp_opts
 
-# gen_preprocess_options ()
 
-
-def gen_lib_options (compiler, library_dirs, runtime_library_dirs, libraries):
+def gen_lib_options(compiler, library_dirs, runtime_library_dirs, libraries):
     """Generate linker options for searching library directories and
-    linking with specific libraries.  'libraries' and 'library_dirs' are,
-    respectively, lists of library names (not filenames!) and search
-    directories.  Returns a list of command-line options suitable for use
-    with some compiler (depending on the two format strings passed in).
+    linking with specific libraries.
+
+    'libraries' and 'library_dirs' are, respectively, lists of library names
+    (not filenames!) and search directories.  Returns a list of command-line
+    options suitable for use with some compiler (depending on the two format
+    strings passed in).
     """
     lib_opts = []
 
     for dir in library_dirs:
-        lib_opts.append (compiler.library_dir_option (dir))
+        lib_opts.append(compiler.library_dir_option(dir))
 
     for dir in runtime_library_dirs:
-        opt = compiler.runtime_library_dir_option (dir)
-        if type(opt) is ListType:
-            lib_opts = lib_opts + opt
+        opt = compiler.runtime_library_dir_option(dir)
+        if isinstance(opt, list):
+            lib_opts.extend(opt)
         else:
-            lib_opts.append (opt)
+            lib_opts.append(opt)
 
     # XXX it's important that we *not* remove redundant library mentions!
     # sometimes you really do have to say "-lfoo -lbar -lfoo" in order to
@@ -1246,17 +1246,15 @@
     # pretty nasty way to arrange your C code.
 
     for lib in libraries:
-        (lib_dir, lib_name) = os.path.split (lib)
-        if lib_dir:
-            lib_file = compiler.find_library_file ([lib_dir], lib_name)
-            if lib_file:
-                lib_opts.append (lib_file)
+        lib_dir, lib_name = os.path.split(lib)
+        if lib_dir != '':
+            lib_file = compiler.find_library_file([lib_dir], lib_name)
+            if lib_file is not None:
+                lib_opts.append(lib_file)
             else:
-                compiler.warn ("no library file corresponding to "
-                               "'%s' found (skipping)" % lib)
+                compiler.warn("no library file corresponding to "
+                              "'%s' found (skipping)" % lib)
         else:
-            lib_opts.append (compiler.library_option (lib))
+            lib_opts.append(compiler.library_option(lib))
 
     return lib_opts
-
-# gen_lib_options ()

Added: python/trunk/Lib/distutils/tests/test_ccompiler.py
==============================================================================
--- (empty file)
+++ python/trunk/Lib/distutils/tests/test_ccompiler.py	Tue Jun 16 10:31:01 2009
@@ -0,0 +1,37 @@
+"""Tests for distutils.ccompiler."""
+import os
+import unittest
+
+from distutils.ccompiler import gen_lib_options
+
+class FakeCompiler(object):
+    def library_dir_option(self, dir):
+        return "-L" + dir
+
+    def runtime_library_dir_option(self, dir):
+        return ["-cool", "-R" + dir]
+
+    def find_library_file(self, dirs, lib, debug=0):
+        return 'found'
+
+    def library_option(self, lib):
+        return "-l" + lib
+
+class CCompilerTestCase(unittest.TestCase):
+
+    def test_gen_lib_options(self):
+        compiler = FakeCompiler()
+        libdirs = ['lib1', 'lib2']
+        runlibdirs = ['runlib1']
+        libs = [os.path.join('dir', 'name'), 'name2']
+
+        opts = gen_lib_options(compiler, libdirs, runlibdirs, libs)
+        wanted = ['-Llib1', '-Llib2', '-cool', '-Rrunlib1', 'found',
+                  '-lname2']
+        self.assertEquals(opts, wanted)
+
+def test_suite():
+    return unittest.makeSuite(CCompilerTestCase)
+
+if __name__ == "__main__":
+    unittest.main(defaultTest="test_suite")


More information about the Python-checkins mailing list