ยปCore Development>Code coverage>Lib/packaging/tests/test_unixccompiler.py

Python code coverage for Lib/packaging/tests/test_unixccompiler.py

#countcontent
1n/a"""Tests for packaging.unixccompiler."""
2n/aimport sys
3n/a
4n/aimport sysconfig
5n/afrom packaging.compiler.unixccompiler import UnixCCompiler
6n/afrom packaging.tests import unittest
7n/a
8n/a
9n/aclass UnixCCompilerTestCase(unittest.TestCase):
10n/a
11n/a def setUp(self):
12n/a self._backup_platform = sys.platform
13n/a self._backup_get_config_var = sysconfig.get_config_var
14n/a
15n/a class CompilerWrapper(UnixCCompiler):
16n/a def rpath_foo(self):
17n/a return self.runtime_library_dir_option('/foo')
18n/a self.cc = CompilerWrapper()
19n/a
20n/a def tearDown(self):
21n/a sys.platform = self._backup_platform
22n/a sysconfig.get_config_var = self._backup_get_config_var
23n/a
24n/a @unittest.skipIf(sys.platform == 'win32', 'irrelevant on win32')
25n/a def test_runtime_libdir_option(self):
26n/a
27n/a # Issue #5900: Ensure RUNPATH is added to extension
28n/a # modules with RPATH if GNU ld is used
29n/a
30n/a # darwin
31n/a sys.platform = 'darwin'
32n/a self.assertEqual(self.cc.rpath_foo(), '-L/foo')
33n/a
34n/a # hp-ux
35n/a sys.platform = 'hp-ux'
36n/a old_gcv = sysconfig.get_config_var
37n/a
38n/a def gcv(v):
39n/a return 'xxx'
40n/a sysconfig.get_config_var = gcv
41n/a self.assertEqual(self.cc.rpath_foo(), ['+s', '-L/foo'])
42n/a
43n/a def gcv(v):
44n/a return 'gcc'
45n/a sysconfig.get_config_var = gcv
46n/a self.assertEqual(self.cc.rpath_foo(), ['-Wl,+s', '-L/foo'])
47n/a
48n/a def gcv(v):
49n/a return 'g++'
50n/a sysconfig.get_config_var = gcv
51n/a self.assertEqual(self.cc.rpath_foo(), ['-Wl,+s', '-L/foo'])
52n/a
53n/a sysconfig.get_config_var = old_gcv
54n/a
55n/a # irix646
56n/a sys.platform = 'irix646'
57n/a self.assertEqual(self.cc.rpath_foo(), ['-rpath', '/foo'])
58n/a
59n/a # osf1V5
60n/a sys.platform = 'osf1V5'
61n/a self.assertEqual(self.cc.rpath_foo(), ['-rpath', '/foo'])
62n/a
63n/a # GCC GNULD
64n/a sys.platform = 'bar'
65n/a
66n/a def gcv(v):
67n/a if v == 'CC':
68n/a return 'gcc'
69n/a elif v == 'GNULD':
70n/a return 'yes'
71n/a sysconfig.get_config_var = gcv
72n/a self.assertEqual(self.cc.rpath_foo(), '-Wl,--enable-new-dtags,-R/foo')
73n/a
74n/a # GCC non-GNULD
75n/a sys.platform = 'bar'
76n/a
77n/a def gcv(v):
78n/a if v == 'CC':
79n/a return 'gcc'
80n/a elif v == 'GNULD':
81n/a return 'no'
82n/a sysconfig.get_config_var = gcv
83n/a self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo')
84n/a
85n/a # GCC GNULD with fully qualified configuration prefix
86n/a # see #7617
87n/a sys.platform = 'bar'
88n/a
89n/a def gcv(v):
90n/a if v == 'CC':
91n/a return 'x86_64-pc-linux-gnu-gcc-4.4.2'
92n/a elif v == 'GNULD':
93n/a return 'yes'
94n/a sysconfig.get_config_var = gcv
95n/a self.assertEqual(self.cc.rpath_foo(), '-Wl,--enable-new-dtags,-R/foo')
96n/a
97n/a # non-GCC GNULD
98n/a sys.platform = 'bar'
99n/a
100n/a def gcv(v):
101n/a if v == 'CC':
102n/a return 'cc'
103n/a elif v == 'GNULD':
104n/a return 'yes'
105n/a sysconfig.get_config_var = gcv
106n/a self.assertEqual(self.cc.rpath_foo(), '-R/foo')
107n/a
108n/a # non-GCC non-GNULD
109n/a sys.platform = 'bar'
110n/a
111n/a def gcv(v):
112n/a if v == 'CC':
113n/a return 'cc'
114n/a elif v == 'GNULD':
115n/a return 'no'
116n/a sysconfig.get_config_var = gcv
117n/a self.assertEqual(self.cc.rpath_foo(), '-R/foo')
118n/a
119n/a # AIX C/C++ linker
120n/a sys.platform = 'aix'
121n/a
122n/a def gcv(v):
123n/a return 'xxx'
124n/a sysconfig.get_config_var = gcv
125n/a self.assertEqual(self.cc.rpath_foo(), '-blibpath:/foo')
126n/a
127n/a
128n/adef test_suite():
129n/a return unittest.makeSuite(UnixCCompilerTestCase)
130n/a
131n/aif __name__ == "__main__":
132n/a unittest.main(defaultTest="test_suite")