Merged revisions 73445 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r73445 | tarek.ziade | 2009-06-16 10:31:01 +0200 (Tue, 16 Jun 2009) | 1 line

  starting distutils.ccompiler test coverage and cleanup
........
This commit is contained in:
Tarek Ziadé 2009-06-28 21:29:24 +00:00
parent 25bd2062f1
commit cc9144a916
2 changed files with 49 additions and 10 deletions

View File

@ -1151,12 +1151,14 @@ def gen_preprocess_options(macros, include_dirs):
return pp_opts
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 = []
@ -1166,7 +1168,7 @@ def gen_lib_options (compiler, library_dirs, runtime_library_dirs, libraries):
for dir in runtime_library_dirs:
opt = compiler.runtime_library_dir_option(dir)
if isinstance(opt, list):
lib_opts = lib_opts + opt
lib_opts.extend(opt)
else:
lib_opts.append(opt)
@ -1177,14 +1179,14 @@ def gen_lib_options (compiler, library_dirs, runtime_library_dirs, libraries):
# pretty nasty way to arrange your C code.
for lib in libraries:
(lib_dir, lib_name) = os.path.split(lib)
if lib_dir:
lib_dir, lib_name = os.path.split(lib)
if lib_dir != '':
lib_file = compiler.find_library_file([lib_dir], lib_name)
if lib_file:
if lib_file is not None:
lib_opts.append(lib_file)
else:
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

View File

@ -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")