starting distutils.ccompiler test coverage and cleanup
This commit is contained in:
parent
fdefc0a5a1
commit
c1df95e12f
|
@ -1217,27 +1217,27 @@ def gen_preprocess_options (macros, include_dirs):
|
||||||
|
|
||||||
return pp_opts
|
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
|
"""Generate linker options for searching library directories and
|
||||||
linking with specific libraries. 'libraries' and 'library_dirs' are,
|
linking with specific libraries.
|
||||||
respectively, lists of library names (not filenames!) and search
|
|
||||||
directories. Returns a list of command-line options suitable for use
|
'libraries' and 'library_dirs' are, respectively, lists of library names
|
||||||
with some compiler (depending on the two format strings passed in).
|
(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 = []
|
lib_opts = []
|
||||||
|
|
||||||
for dir in library_dirs:
|
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:
|
for dir in runtime_library_dirs:
|
||||||
opt = compiler.runtime_library_dir_option (dir)
|
opt = compiler.runtime_library_dir_option(dir)
|
||||||
if type(opt) is ListType:
|
if isinstance(opt, list):
|
||||||
lib_opts = lib_opts + opt
|
lib_opts.extend(opt)
|
||||||
else:
|
else:
|
||||||
lib_opts.append (opt)
|
lib_opts.append(opt)
|
||||||
|
|
||||||
# XXX it's important that we *not* remove redundant library mentions!
|
# XXX it's important that we *not* remove redundant library mentions!
|
||||||
# sometimes you really do have to say "-lfoo -lbar -lfoo" in order to
|
# sometimes you really do have to say "-lfoo -lbar -lfoo" in order to
|
||||||
|
@ -1246,17 +1246,15 @@ def gen_lib_options (compiler, library_dirs, runtime_library_dirs, libraries):
|
||||||
# pretty nasty way to arrange your C code.
|
# pretty nasty way to arrange your C code.
|
||||||
|
|
||||||
for lib in libraries:
|
for lib in libraries:
|
||||||
(lib_dir, lib_name) = os.path.split (lib)
|
lib_dir, lib_name = os.path.split(lib)
|
||||||
if lib_dir:
|
if lib_dir != '':
|
||||||
lib_file = compiler.find_library_file ([lib_dir], lib_name)
|
lib_file = compiler.find_library_file([lib_dir], lib_name)
|
||||||
if lib_file:
|
if lib_file is not None:
|
||||||
lib_opts.append (lib_file)
|
lib_opts.append(lib_file)
|
||||||
else:
|
else:
|
||||||
compiler.warn ("no library file corresponding to "
|
compiler.warn("no library file corresponding to "
|
||||||
"'%s' found (skipping)" % lib)
|
"'%s' found (skipping)" % lib)
|
||||||
else:
|
else:
|
||||||
lib_opts.append (compiler.library_option (lib))
|
lib_opts.append(compiler.library_option(lib))
|
||||||
|
|
||||||
return lib_opts
|
return lib_opts
|
||||||
|
|
||||||
# gen_lib_options ()
|
|
||||||
|
|
|
@ -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")
|
Loading…
Reference in New Issue