e21873e821b3e4d2b7bf4b4697fdbd4c1e2157b5
[profile/ivi/python.git] / Lib / distutils / tests / test_ccompiler.py
1 """Tests for distutils.ccompiler."""
2 import os
3 import unittest
4 from test.test_support import captured_stdout
5
6 from distutils.ccompiler import (gen_lib_options, CCompiler,
7                                  get_default_compiler, customize_compiler)
8 from distutils import debug
9 from distutils.tests import support
10
11 class FakeCompiler(object):
12     def library_dir_option(self, dir):
13         return "-L" + dir
14
15     def runtime_library_dir_option(self, dir):
16         return ["-cool", "-R" + dir]
17
18     def find_library_file(self, dirs, lib, debug=0):
19         return 'found'
20
21     def library_option(self, lib):
22         return "-l" + lib
23
24 class CCompilerTestCase(support.EnvironGuard, unittest.TestCase):
25
26     def test_gen_lib_options(self):
27         compiler = FakeCompiler()
28         libdirs = ['lib1', 'lib2']
29         runlibdirs = ['runlib1']
30         libs = [os.path.join('dir', 'name'), 'name2']
31
32         opts = gen_lib_options(compiler, libdirs, runlibdirs, libs)
33         wanted = ['-Llib1', '-Llib2', '-cool', '-Rrunlib1', 'found',
34                   '-lname2']
35         self.assertEqual(opts, wanted)
36
37     def test_debug_print(self):
38
39         class MyCCompiler(CCompiler):
40             executables = {}
41
42         compiler = MyCCompiler()
43         with captured_stdout() as stdout:
44             compiler.debug_print('xxx')
45         stdout.seek(0)
46         self.assertEqual(stdout.read(), '')
47
48         debug.DEBUG = True
49         try:
50             with captured_stdout() as stdout:
51                 compiler.debug_print('xxx')
52             stdout.seek(0)
53             self.assertEqual(stdout.read(), 'xxx\n')
54         finally:
55             debug.DEBUG = False
56
57     def test_customize_compiler(self):
58
59         # not testing if default compiler is not unix
60         if get_default_compiler() != 'unix':
61             return
62
63         os.environ['AR'] = 'my_ar'
64         os.environ['ARFLAGS'] = '-arflags'
65
66         # make sure AR gets caught
67         class compiler:
68             compiler_type = 'unix'
69
70             def set_executables(self, **kw):
71                 self.exes = kw
72
73         comp = compiler()
74         customize_compiler(comp)
75         self.assertEqual(comp.exes['archiver'], 'my_ar -arflags')
76
77 def test_suite():
78     return unittest.makeSuite(CCompilerTestCase)
79
80 if __name__ == "__main__":
81     unittest.main(defaultTest="test_suite")