NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

test_msvc9compiler.py (4146B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\distutils\tests\test_msvc9compiler.py
      2 import sys
      3 import unittest
      4 import os
      5 from distutils.errors import DistutilsPlatformError
      6 from distutils.tests import support
      7 _MANIFEST = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<assembly xmlns="urn:schemas-microsoft-com:asm.v1"\n          manifestVersion="1.0">\n  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">\n    <security>\n      <requestedPrivileges>\n        <requestedExecutionLevel level="asInvoker" uiAccess="false">\n        </requestedExecutionLevel>\n      </requestedPrivileges>\n    </security>\n  </trustInfo>\n  <dependency>\n    <dependentAssembly>\n      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT"\n         version="9.0.21022.8" processorArchitecture="x86"\n         publicKeyToken="XXXX">\n      </assemblyIdentity>\n    </dependentAssembly>\n  </dependency>\n  <dependency>\n    <dependentAssembly>\n      <assemblyIdentity type="win32" name="Microsoft.VC90.MFC"\n        version="9.0.21022.8" processorArchitecture="x86"\n        publicKeyToken="XXXX"></assemblyIdentity>\n    </dependentAssembly>\n  </dependency>\n</assembly>\n'
      8 _CLEANED_MANIFEST = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<assembly xmlns="urn:schemas-microsoft-com:asm.v1"\n          manifestVersion="1.0">\n  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">\n    <security>\n      <requestedPrivileges>\n        <requestedExecutionLevel level="asInvoker" uiAccess="false">\n        </requestedExecutionLevel>\n      </requestedPrivileges>\n    </security>\n  </trustInfo>\n  <dependency>\n\n  </dependency>\n  <dependency>\n    <dependentAssembly>\n      <assemblyIdentity type="win32" name="Microsoft.VC90.MFC"\n        version="9.0.21022.8" processorArchitecture="x86"\n        publicKeyToken="XXXX"></assemblyIdentity>\n    </dependentAssembly>\n  </dependency>\n</assembly>'
      9 if sys.platform == 'win32':
     10     from distutils.msvccompiler import get_build_version
     11     if get_build_version() >= 8.0:
     12         SKIP_MESSAGE = None
     13     else:
     14         SKIP_MESSAGE = 'These tests are only for MSVC8.0 or above'
     15 else:
     16     SKIP_MESSAGE = 'These tests are only for win32'
     17 
     18 @unittest.skipUnless(SKIP_MESSAGE is None, SKIP_MESSAGE)
     19 
     20 class msvc9compilerTestCase(support.TempdirManager, unittest.TestCase):
     21 
     22     def test_no_compiler(self):
     23         from distutils.msvc9compiler import query_vcvarsall
     24 
     25         def _find_vcvarsall(version):
     26             return None
     27 
     28         from distutils import msvc9compiler
     29         old_find_vcvarsall = msvc9compiler.find_vcvarsall
     30         msvc9compiler.find_vcvarsall = _find_vcvarsall
     31         try:
     32             self.assertRaises(DistutilsPlatformError, query_vcvarsall, 'wont find this version')
     33         finally:
     34             msvc9compiler.find_vcvarsall = old_find_vcvarsall
     35 
     36     def test_reg_class(self):
     37         from distutils.msvc9compiler import Reg
     38         self.assertRaises(KeyError, Reg.get_value, 'xxx', 'xxx')
     39         path = 'Control Panel\\Desktop'
     40         v = Reg.get_value(path, u'dragfullwindows')
     41         self.assertTrue(v in (u'0', u'1', u'2'))
     42         import _winreg
     43         HKCU = _winreg.HKEY_CURRENT_USER
     44         keys = Reg.read_keys(HKCU, 'xxxx')
     45         self.assertEqual(keys, None)
     46         keys = Reg.read_keys(HKCU, 'Control Panel')
     47         self.assertTrue('Desktop' in keys)
     48 
     49     def test_remove_visual_c_ref(self):
     50         from distutils.msvc9compiler import MSVCCompiler
     51         tempdir = self.mkdtemp()
     52         manifest = os.path.join(tempdir, 'manifest')
     53         f = open(manifest, 'w')
     54         try:
     55             f.write(_MANIFEST)
     56         finally:
     57             f.close()
     58 
     59         compiler = MSVCCompiler()
     60         compiler._remove_visual_c_ref(manifest)
     61         f = open(manifest)
     62         try:
     63             content = '\n'.join([ line.rstrip() for line in f.readlines() ])
     64         finally:
     65             f.close()
     66 
     67         self.assertEqual(content, _CLEANED_MANIFEST)
     68 
     69 
     70 def test_suite():
     71     return unittest.makeSuite(msvc9compilerTestCase)
     72 
     73 
     74 if __name__ == '__main__':
     75     unittest.main(defaultTest='test_suite')