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

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

#countcontent
1n/a"""Tests for packaging.compiler.msvc9compiler."""
2n/aimport os
3n/aimport sys
4n/a
5n/afrom packaging.errors import PackagingPlatformError
6n/a
7n/afrom packaging.tests import unittest, support
8n/a
9n/a_MANIFEST = """\
10n/a<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
11n/a<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
12n/a manifestVersion="1.0">
13n/a <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
14n/a <security>
15n/a <requestedPrivileges>
16n/a <requestedExecutionLevel level="asInvoker" uiAccess="false">
17n/a </requestedExecutionLevel>
18n/a </requestedPrivileges>
19n/a </security>
20n/a </trustInfo>
21n/a <dependency>
22n/a <dependentAssembly>
23n/a <assemblyIdentity type="win32" name="Microsoft.VC90.CRT"
24n/a version="9.0.21022.8" processorArchitecture="x86"
25n/a publicKeyToken="XXXX">
26n/a </assemblyIdentity>
27n/a </dependentAssembly>
28n/a </dependency>
29n/a <dependency>
30n/a <dependentAssembly>
31n/a <assemblyIdentity type="win32" name="Microsoft.VC90.MFC"
32n/a version="9.0.21022.8" processorArchitecture="x86"
33n/a publicKeyToken="XXXX"></assemblyIdentity>
34n/a </dependentAssembly>
35n/a </dependency>
36n/a</assembly>
37n/a"""
38n/a
39n/a_CLEANED_MANIFEST = """\
40n/a<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
41n/a<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
42n/a manifestVersion="1.0">
43n/a <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
44n/a <security>
45n/a <requestedPrivileges>
46n/a <requestedExecutionLevel level="asInvoker" uiAccess="false">
47n/a </requestedExecutionLevel>
48n/a </requestedPrivileges>
49n/a </security>
50n/a </trustInfo>
51n/a <dependency>
52n/a
53n/a </dependency>
54n/a <dependency>
55n/a <dependentAssembly>
56n/a <assemblyIdentity type="win32" name="Microsoft.VC90.MFC"
57n/a version="9.0.21022.8" processorArchitecture="x86"
58n/a publicKeyToken="XXXX"></assemblyIdentity>
59n/a </dependentAssembly>
60n/a </dependency>
61n/a</assembly>"""
62n/a
63n/a
64n/aclass msvc9compilerTestCase(support.TempdirManager,
65n/a unittest.TestCase):
66n/a
67n/a @unittest.skipUnless(sys.platform == "win32", "runs only on win32")
68n/a def test_no_compiler(self):
69n/a # make sure query_vcvarsall raises a PackagingPlatformError if
70n/a # the compiler is not found
71n/a from packaging.compiler.msvccompiler import get_build_version
72n/a if get_build_version() < 8.0:
73n/a raise unittest.SkipTest('only for MSVC8.0 or above')
74n/a
75n/a from packaging.compiler import msvc9compiler
76n/a from packaging.compiler.msvc9compiler import query_vcvarsall
77n/a
78n/a def _find_vcvarsall(version):
79n/a return None
80n/a
81n/a old_find_vcvarsall = msvc9compiler.find_vcvarsall
82n/a msvc9compiler.find_vcvarsall = _find_vcvarsall
83n/a try:
84n/a self.assertRaises(PackagingPlatformError, query_vcvarsall,
85n/a 'wont find this version')
86n/a finally:
87n/a msvc9compiler.find_vcvarsall = old_find_vcvarsall
88n/a
89n/a @unittest.skipUnless(sys.platform == "win32", "runs only on win32")
90n/a def test_reg_class(self):
91n/a from packaging.compiler.msvccompiler import get_build_version
92n/a if get_build_version() < 8.0:
93n/a raise unittest.SkipTest("requires MSVC 8.0 or later")
94n/a
95n/a from packaging.compiler.msvc9compiler import Reg
96n/a self.assertRaises(KeyError, Reg.get_value, 'xxx', 'xxx')
97n/a
98n/a # looking for values that should exist on all
99n/a # windows registeries versions.
100n/a path = r'Control Panel\Desktop'
101n/a v = Reg.get_value(path, 'dragfullwindows')
102n/a self.assertIn(v, ('0', '1', '2'))
103n/a
104n/a import winreg
105n/a HKCU = winreg.HKEY_CURRENT_USER
106n/a keys = Reg.read_keys(HKCU, 'xxxx')
107n/a self.assertEqual(keys, None)
108n/a
109n/a keys = Reg.read_keys(HKCU, r'Control Panel')
110n/a self.assertIn('Desktop', keys)
111n/a
112n/a @unittest.skipUnless(sys.platform == "win32", "runs only on win32")
113n/a def test_remove_visual_c_ref(self):
114n/a from packaging.compiler.msvccompiler import get_build_version
115n/a if get_build_version() < 8.0:
116n/a raise unittest.SkipTest("requires MSVC 8.0 or later")
117n/a
118n/a from packaging.compiler.msvc9compiler import MSVCCompiler
119n/a tempdir = self.mkdtemp()
120n/a manifest = os.path.join(tempdir, 'manifest')
121n/a with open(manifest, 'w') as f:
122n/a f.write(_MANIFEST)
123n/a
124n/a compiler = MSVCCompiler()
125n/a compiler._remove_visual_c_ref(manifest)
126n/a
127n/a # see what we got
128n/a with open(manifest) as f:
129n/a # removing trailing spaces
130n/a content = '\n'.join(line.rstrip() for line in f.readlines())
131n/a
132n/a # makes sure the manifest was properly cleaned
133n/a self.assertEqual(content, _CLEANED_MANIFEST)
134n/a
135n/a
136n/adef test_suite():
137n/a return unittest.makeSuite(msvc9compilerTestCase)
138n/a
139n/aif __name__ == "__main__":
140n/a unittest.main(defaultTest="test_suite")