annotate Lib/distutils/tests/test_ccompiler.py @ 79675:c0a2294de787 2.7

Issue #16199: Backport 2to3 typo fix from 3.2.
author Chris Jerdonek <chris.jerdonek@gmail.com>
date Thu, 11 Oct 2012 16:15:46 -0700
parents 6240ff5dfebe
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
54936
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
1 """Tests for distutils.ccompiler."""
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
2 import os
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
3 import unittest
56152
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
4 from test.test_support import captured_stdout
54936
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
5
58450
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
6 from distutils.ccompiler import (gen_lib_options, CCompiler,
74871
6240ff5dfebe Issue #13994: Earler partial revert of Distutils enhancements in 2.7
Ned Deily <nad@acm.org>
parents: 66348
diff changeset
7 get_default_compiler)
6240ff5dfebe Issue #13994: Earler partial revert of Distutils enhancements in 2.7
Ned Deily <nad@acm.org>
parents: 66348
diff changeset
8 from distutils.sysconfig import customize_compiler
56152
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
9 from distutils import debug
58450
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
10 from distutils.tests import support
54936
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
11
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
12 class FakeCompiler(object):
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
13 def library_dir_option(self, dir):
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
14 return "-L" + dir
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
15
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
16 def runtime_library_dir_option(self, dir):
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
17 return ["-cool", "-R" + dir]
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
18
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
19 def find_library_file(self, dirs, lib, debug=0):
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
20 return 'found'
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
21
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
22 def library_option(self, lib):
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
23 return "-l" + lib
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
24
58450
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
25 class CCompilerTestCase(support.EnvironGuard, unittest.TestCase):
54936
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
26
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
27 def test_gen_lib_options(self):
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
28 compiler = FakeCompiler()
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
29 libdirs = ['lib1', 'lib2']
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
30 runlibdirs = ['runlib1']
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
31 libs = [os.path.join('dir', 'name'), 'name2']
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
32
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
33 opts = gen_lib_options(compiler, libdirs, runlibdirs, libs)
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
34 wanted = ['-Llib1', '-Llib2', '-cool', '-Rrunlib1', 'found',
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
35 '-lname2']
66348
614c84670c63 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58450
diff changeset
36 self.assertEqual(opts, wanted)
54936
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
37
56152
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
38 def test_debug_print(self):
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
39
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
40 class MyCCompiler(CCompiler):
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
41 executables = {}
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
42
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
43 compiler = MyCCompiler()
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
44 with captured_stdout() as stdout:
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
45 compiler.debug_print('xxx')
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
46 stdout.seek(0)
66348
614c84670c63 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58450
diff changeset
47 self.assertEqual(stdout.read(), '')
56152
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
48
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
49 debug.DEBUG = True
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
50 try:
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
51 with captured_stdout() as stdout:
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
52 compiler.debug_print('xxx')
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
53 stdout.seek(0)
66348
614c84670c63 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58450
diff changeset
54 self.assertEqual(stdout.read(), 'xxx\n')
56152
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
55 finally:
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
56 debug.DEBUG = False
2df8bedec6d3 improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 54936
diff changeset
57
58450
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
58 def test_customize_compiler(self):
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
59
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
60 # not testing if default compiler is not unix
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
61 if get_default_compiler() != 'unix':
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
62 return
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
63
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
64 os.environ['AR'] = 'my_ar'
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
65 os.environ['ARFLAGS'] = '-arflags'
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
66
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
67 # make sure AR gets caught
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
68 class compiler:
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
69 compiler_type = 'unix'
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
70
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
71 def set_executables(self, **kw):
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
72 self.exes = kw
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
73
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
74 comp = compiler()
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
75 customize_compiler(comp)
66348
614c84670c63 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58450
diff changeset
76 self.assertEqual(comp.exes['archiver'], 'my_ar -arflags')
58450
fa69e891edf4 taking sysconfig out of distutils
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 56152
diff changeset
77
54936
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
78 def test_suite():
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
79 return unittest.makeSuite(CCompilerTestCase)
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
80
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
81 if __name__ == "__main__":
66cc50890894 Merged revisions 73445 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
82 unittest.main(defaultTest="test_suite")