| 
									
										
										
										
											2008-12-30 23:09:20 +00:00
										 |  |  | """Tests for distutils.msvc9compiler.""" | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | import unittest | 
					
						
							| 
									
										
										
										
											2009-12-21 23:18:02 +00:00
										 |  |  | import os | 
					
						
							| 
									
										
										
										
											2008-12-30 23:09:20 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | from distutils.errors import DistutilsPlatformError | 
					
						
							| 
									
										
										
										
											2009-12-21 23:18:02 +00:00
										 |  |  | from distutils.tests import support | 
					
						
							| 
									
										
											  
											
												Merged revisions 86236,86240,86332,86340,87271,87273,87447 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
The missing NEWS entries correspond to changes that were made before 3.1.3, but
I think it’s not usual to edit entries of released versions, so I put them at
the top.
........
  r86236 | eric.araujo | 2010-11-06 03:44:43 +0100 (sam., 06 nov. 2010) | 2 lines
  Make sure each test can be run standalone (./python Lib/distutils/tests/x.py)
........
  r86240 | eric.araujo | 2010-11-06 05:11:59 +0100 (sam., 06 nov. 2010) | 2 lines
  Prevent ResourceWarnings in test_gettext
........
  r86332 | eric.araujo | 2010-11-08 19:15:17 +0100 (lun., 08 nov. 2010) | 4 lines
  Add missing NEWS entry for a fix committed by Senthil.
  All recent modifications to distutils should now be covered in NEWS.
........
  r86340 | eric.araujo | 2010-11-08 22:48:23 +0100 (lun., 08 nov. 2010) | 2 lines
  This was actually fixed for the previous alpha.
........
  r87271 | eric.araujo | 2010-12-15 20:09:58 +0100 (mer., 15 déc. 2010) | 2 lines
  Improve trace documentation (#9264).  Patch by Eli Bendersky.
........
  r87273 | eric.araujo | 2010-12-15 20:30:15 +0100 (mer., 15 déc. 2010) | 2 lines
  Use nested method directives, rewrap long lines, fix whitespace.
........
  r87447 | eric.araujo | 2010-12-23 20:13:05 +0100 (jeu., 23 déc. 2010) | 2 lines
  Fix typo in superclass method name
........
											
										 
											2011-02-02 21:38:37 +00:00
										 |  |  | from test.support import run_unittest | 
					
						
							| 
									
										
										
										
											2008-12-30 23:09:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-21 23:18:02 +00:00
										 |  |  | _MANIFEST = """\
 | 
					
						
							|  |  |  | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | 
					
						
							|  |  |  | <assembly xmlns="urn:schemas-microsoft-com:asm.v1" | 
					
						
							|  |  |  |           manifestVersion="1.0"> | 
					
						
							|  |  |  |   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> | 
					
						
							|  |  |  |     <security> | 
					
						
							|  |  |  |       <requestedPrivileges> | 
					
						
							|  |  |  |         <requestedExecutionLevel level="asInvoker" uiAccess="false"> | 
					
						
							|  |  |  |         </requestedExecutionLevel> | 
					
						
							|  |  |  |       </requestedPrivileges> | 
					
						
							|  |  |  |     </security> | 
					
						
							|  |  |  |   </trustInfo> | 
					
						
							|  |  |  |   <dependency> | 
					
						
							|  |  |  |     <dependentAssembly> | 
					
						
							|  |  |  |       <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" | 
					
						
							|  |  |  |          version="9.0.21022.8" processorArchitecture="x86" | 
					
						
							|  |  |  |          publicKeyToken="XXXX"> | 
					
						
							|  |  |  |       </assemblyIdentity> | 
					
						
							|  |  |  |     </dependentAssembly> | 
					
						
							|  |  |  |   </dependency> | 
					
						
							|  |  |  |   <dependency> | 
					
						
							|  |  |  |     <dependentAssembly> | 
					
						
							|  |  |  |       <assemblyIdentity type="win32" name="Microsoft.VC90.MFC" | 
					
						
							|  |  |  |         version="9.0.21022.8" processorArchitecture="x86" | 
					
						
							|  |  |  |         publicKeyToken="XXXX"></assemblyIdentity> | 
					
						
							|  |  |  |     </dependentAssembly> | 
					
						
							|  |  |  |   </dependency> | 
					
						
							|  |  |  | </assembly> | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | _CLEANED_MANIFEST = """\
 | 
					
						
							|  |  |  | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | 
					
						
							|  |  |  | <assembly xmlns="urn:schemas-microsoft-com:asm.v1" | 
					
						
							|  |  |  |           manifestVersion="1.0"> | 
					
						
							|  |  |  |   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> | 
					
						
							|  |  |  |     <security> | 
					
						
							|  |  |  |       <requestedPrivileges> | 
					
						
							|  |  |  |         <requestedExecutionLevel level="asInvoker" uiAccess="false"> | 
					
						
							|  |  |  |         </requestedExecutionLevel> | 
					
						
							|  |  |  |       </requestedPrivileges> | 
					
						
							|  |  |  |     </security> | 
					
						
							|  |  |  |   </trustInfo> | 
					
						
							|  |  |  |   <dependency> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   </dependency> | 
					
						
							|  |  |  |   <dependency> | 
					
						
							|  |  |  |     <dependentAssembly> | 
					
						
							|  |  |  |       <assemblyIdentity type="win32" name="Microsoft.VC90.MFC" | 
					
						
							|  |  |  |         version="9.0.21022.8" processorArchitecture="x86" | 
					
						
							|  |  |  |         publicKeyToken="XXXX"></assemblyIdentity> | 
					
						
							|  |  |  |     </dependentAssembly> | 
					
						
							|  |  |  |   </dependency> | 
					
						
							|  |  |  | </assembly>"""
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-13 05:48:30 +00:00
										 |  |  | if sys.platform=="win32": | 
					
						
							|  |  |  |     from distutils.msvccompiler import get_build_version | 
					
						
							| 
									
										
										
										
											2010-09-13 07:48:22 +00:00
										 |  |  |     if get_build_version()>=8.0: | 
					
						
							|  |  |  |         SKIP_MESSAGE = None | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         SKIP_MESSAGE = "These tests are only for MSVC8.0 or above" | 
					
						
							|  |  |  | else: | 
					
						
							|  |  |  |     SKIP_MESSAGE = "These tests are only for win32" | 
					
						
							| 
									
										
										
										
											2010-09-13 05:48:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-13 07:48:22 +00:00
										 |  |  | @unittest.skipUnless(SKIP_MESSAGE is None, SKIP_MESSAGE) | 
					
						
							| 
									
										
										
										
											2009-12-21 23:18:02 +00:00
										 |  |  | class msvc9compilerTestCase(support.TempdirManager, | 
					
						
							|  |  |  |                             unittest.TestCase): | 
					
						
							| 
									
										
										
										
											2008-12-30 23:09:20 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_no_compiler(self): | 
					
						
							|  |  |  |         # makes sure query_vcvarsall throws | 
					
						
							|  |  |  |         # a DistutilsPlatformError if the compiler | 
					
						
							|  |  |  |         # is not found | 
					
						
							|  |  |  |         from distutils.msvc9compiler import query_vcvarsall | 
					
						
							|  |  |  |         def _find_vcvarsall(version): | 
					
						
							|  |  |  |             return None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         from distutils import msvc9compiler | 
					
						
							|  |  |  |         old_find_vcvarsall = msvc9compiler.find_vcvarsall | 
					
						
							|  |  |  |         msvc9compiler.find_vcvarsall = _find_vcvarsall | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             self.assertRaises(DistutilsPlatformError, query_vcvarsall, | 
					
						
							|  |  |  |                              'wont find this version') | 
					
						
							|  |  |  |         finally: | 
					
						
							|  |  |  |             msvc9compiler.find_vcvarsall = old_find_vcvarsall | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-07 00:51:53 +00:00
										 |  |  |     def test_reg_class(self): | 
					
						
							|  |  |  |         from distutils.msvc9compiler import Reg | 
					
						
							|  |  |  |         self.assertRaises(KeyError, Reg.get_value, 'xxx', 'xxx') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # looking for values that should exist on all | 
					
						
							|  |  |  |         # windows registeries versions. | 
					
						
							| 
									
										
										
										
											2009-11-18 10:19:38 +00:00
										 |  |  |         path = r'Control Panel\Desktop' | 
					
						
							|  |  |  |         v = Reg.get_value(path, 'dragfullwindows') | 
					
						
							| 
									
										
										
										
											2009-11-19 05:41:34 +00:00
										 |  |  |         self.assertTrue(v in ('0', '1', '2')) | 
					
						
							| 
									
										
										
										
											2009-03-07 00:51:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-01 04:28:33 +00:00
										 |  |  |         import winreg | 
					
						
							|  |  |  |         HKCU = winreg.HKEY_CURRENT_USER | 
					
						
							| 
									
										
										
										
											2009-03-07 00:51:53 +00:00
										 |  |  |         keys = Reg.read_keys(HKCU, 'xxxx') | 
					
						
							| 
									
										
										
										
											2010-11-21 01:30:29 +00:00
										 |  |  |         self.assertEqual(keys, None) | 
					
						
							| 
									
										
										
										
											2009-03-07 00:51:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-18 10:19:38 +00:00
										 |  |  |         keys = Reg.read_keys(HKCU, r'Control Panel') | 
					
						
							|  |  |  |         self.assertTrue('Desktop' in keys) | 
					
						
							| 
									
										
										
										
											2009-03-07 00:51:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-21 23:18:02 +00:00
										 |  |  |     def test_remove_visual_c_ref(self): | 
					
						
							|  |  |  |         from distutils.msvc9compiler import MSVCCompiler | 
					
						
							|  |  |  |         tempdir = self.mkdtemp() | 
					
						
							|  |  |  |         manifest = os.path.join(tempdir, 'manifest') | 
					
						
							|  |  |  |         f = open(manifest, 'w') | 
					
						
							| 
									
										
										
										
											2010-11-06 02:58:56 +00:00
										 |  |  |         try: | 
					
						
							|  |  |  |             f.write(_MANIFEST) | 
					
						
							|  |  |  |         finally: | 
					
						
							|  |  |  |             f.close() | 
					
						
							| 
									
										
										
										
											2009-12-21 23:18:02 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         compiler = MSVCCompiler() | 
					
						
							|  |  |  |         compiler._remove_visual_c_ref(manifest) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # see what we got | 
					
						
							|  |  |  |         f = open(manifest) | 
					
						
							| 
									
										
										
										
											2010-11-06 02:58:56 +00:00
										 |  |  |         try: | 
					
						
							|  |  |  |             # removing trailing spaces | 
					
						
							|  |  |  |             content = '\n'.join([line.rstrip() for line in f.readlines()]) | 
					
						
							|  |  |  |         finally: | 
					
						
							|  |  |  |             f.close() | 
					
						
							| 
									
										
										
										
											2009-12-21 23:18:02 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # makes sure the manifest was properly cleaned | 
					
						
							| 
									
										
										
										
											2010-11-21 01:30:29 +00:00
										 |  |  |         self.assertEqual(content, _CLEANED_MANIFEST) | 
					
						
							| 
									
										
										
										
											2009-12-21 23:18:02 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-30 23:09:20 +00:00
										 |  |  | def test_suite(): | 
					
						
							|  |  |  |     return unittest.makeSuite(msvc9compilerTestCase) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							| 
									
										
											  
											
												Merged revisions 86236,86240,86332,86340,87271,87273,87447 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
The missing NEWS entries correspond to changes that were made before 3.1.3, but
I think it’s not usual to edit entries of released versions, so I put them at
the top.
........
  r86236 | eric.araujo | 2010-11-06 03:44:43 +0100 (sam., 06 nov. 2010) | 2 lines
  Make sure each test can be run standalone (./python Lib/distutils/tests/x.py)
........
  r86240 | eric.araujo | 2010-11-06 05:11:59 +0100 (sam., 06 nov. 2010) | 2 lines
  Prevent ResourceWarnings in test_gettext
........
  r86332 | eric.araujo | 2010-11-08 19:15:17 +0100 (lun., 08 nov. 2010) | 4 lines
  Add missing NEWS entry for a fix committed by Senthil.
  All recent modifications to distutils should now be covered in NEWS.
........
  r86340 | eric.araujo | 2010-11-08 22:48:23 +0100 (lun., 08 nov. 2010) | 2 lines
  This was actually fixed for the previous alpha.
........
  r87271 | eric.araujo | 2010-12-15 20:09:58 +0100 (mer., 15 déc. 2010) | 2 lines
  Improve trace documentation (#9264).  Patch by Eli Bendersky.
........
  r87273 | eric.araujo | 2010-12-15 20:30:15 +0100 (mer., 15 déc. 2010) | 2 lines
  Use nested method directives, rewrap long lines, fix whitespace.
........
  r87447 | eric.araujo | 2010-12-23 20:13:05 +0100 (jeu., 23 déc. 2010) | 2 lines
  Fix typo in superclass method name
........
											
										 
											2011-02-02 21:38:37 +00:00
										 |  |  |     run_unittest(test_suite()) |