| 
									
										
										
										
											2008-12-30 23:09:20 +00:00
										 |  |  | """Tests for distutils.msvc9compiler.""" | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | import unittest | 
					
						
							| 
									
										
										
										
											2009-12-21 23:12:41 +00:00
										 |  |  | import os | 
					
						
							| 
									
										
										
										
											2008-12-30 23:09:20 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | from distutils.errors import DistutilsPlatformError | 
					
						
							| 
									
										
										
										
											2009-12-21 23:12:41 +00:00
										 |  |  | from distutils.tests import support | 
					
						
							| 
									
										
										
										
											2008-12-30 23:09:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-21 23:12:41 +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>"""
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-21 23:16:09 +00:00
										 |  |  | @unittest.skipUnless(sys.platform=="win32", "These tests are only for win32") | 
					
						
							| 
									
										
										
										
											2009-12-21 23:12:41 +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 | 
					
						
							| 
									
										
										
										
											2009-01-07 10:11:17 +00:00
										 |  |  |         from distutils.msvccompiler import get_build_version | 
					
						
							|  |  |  |         if get_build_version() < 8.0: | 
					
						
							|  |  |  |             # this test is only for MSVC8.0 or above | 
					
						
							|  |  |  |             return | 
					
						
							| 
									
										
										
										
											2008-12-30 23:09:20 +00:00
										 |  |  |         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): | 
					
						
							| 
									
										
											  
											
												Merged revisions 70342,70385-70387,70389-70390,70392-70393,70395,70400,70405-70406,70418,70438,70464,70468 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r70342 | georg.brandl | 2009-03-13 14:03:58 -0500 (Fri, 13 Mar 2009) | 1 line
  #5486: typos.
........
  r70385 | benjamin.peterson | 2009-03-15 09:38:55 -0500 (Sun, 15 Mar 2009) | 1 line
  fix tuple.index() error message #5495
........
  r70386 | georg.brandl | 2009-03-15 16:32:06 -0500 (Sun, 15 Mar 2009) | 1 line
  #5496: fix docstring of lookup().
........
  r70387 | georg.brandl | 2009-03-15 16:37:16 -0500 (Sun, 15 Mar 2009) | 1 line
  #5493: clarify __nonzero__ docs.
........
  r70389 | georg.brandl | 2009-03-15 16:43:38 -0500 (Sun, 15 Mar 2009) | 1 line
  Fix a small nit in the error message if bool() falls back on __len__ and it returns the wrong type: it would tell the user that __nonzero__ should return bool or int.
........
  r70390 | georg.brandl | 2009-03-15 16:44:43 -0500 (Sun, 15 Mar 2009) | 1 line
  #5491: clarify nested() semantics.
........
  r70392 | georg.brandl | 2009-03-15 16:46:00 -0500 (Sun, 15 Mar 2009) | 1 line
  #5488: add missing struct member.
........
  r70393 | georg.brandl | 2009-03-15 16:47:42 -0500 (Sun, 15 Mar 2009) | 1 line
  #5478: fix copy-paste oversight in function signature.
........
  r70395 | georg.brandl | 2009-03-15 16:51:48 -0500 (Sun, 15 Mar 2009) | 1 line
  #5276: document IDLESTARTUP and .Idle.py.
........
  r70400 | georg.brandl | 2009-03-15 16:59:37 -0500 (Sun, 15 Mar 2009) | 3 lines
  Fix markup in re docs and give a mail address in regex howto, so that
  the recommendation to send suggestions to the author can be followed.
........
  r70405 | georg.brandl | 2009-03-15 17:11:07 -0500 (Sun, 15 Mar 2009) | 7 lines
  Move the previously local import of threading to module level.
  This is cleaner and avoids lockups in obscure cases where a Queue
  is instantiated while the import lock is already held by another thread.
  OKed by Tim Peters.
........
  r70406 | hirokazu.yamamoto | 2009-03-15 17:43:14 -0500 (Sun, 15 Mar 2009) | 1 line
  Added skip for old MSVC.
........
  r70418 | georg.brandl | 2009-03-16 14:42:03 -0500 (Mon, 16 Mar 2009) | 1 line
  Add token markup.
........
  r70438 | benjamin.peterson | 2009-03-17 15:29:51 -0500 (Tue, 17 Mar 2009) | 1 line
  I thought this was begging for an example
........
  r70464 | benjamin.peterson | 2009-03-18 15:58:09 -0500 (Wed, 18 Mar 2009) | 1 line
  a much better example
........
  r70468 | benjamin.peterson | 2009-03-18 22:04:31 -0500 (Wed, 18 Mar 2009) | 1 line
  close files after comparing them
........
											
										 
											2009-03-21 17:31:58 +00:00
										 |  |  |         from distutils.msvccompiler import get_build_version | 
					
						
							|  |  |  |         if get_build_version() < 8.0: | 
					
						
							|  |  |  |             # this test is only for MSVC8.0 or above | 
					
						
							|  |  |  |             return | 
					
						
							| 
									
										
										
										
											2009-03-07 00:51:53 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         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 09:32:34 +00:00
										 |  |  |         path = r'Control Panel\Desktop' | 
					
						
							|  |  |  |         v = Reg.get_value(path, 'dragfullwindows') | 
					
						
							| 
									
										
										
										
											2009-11-19 05:39:00 +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') | 
					
						
							|  |  |  |         self.assertEquals(keys, None) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-18 09:32:34 +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:12:41 +00:00
										 |  |  |     def test_remove_visual_c_ref(self): | 
					
						
							| 
									
										
										
										
											2010-09-12 22:55:40 +00:00
										 |  |  |         from distutils.msvccompiler import get_build_version | 
					
						
							|  |  |  |         if get_build_version() < 8.0: | 
					
						
							|  |  |  |             # this test is only for MSVC8.0 or above | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-21 23:12:41 +00:00
										 |  |  |         from distutils.msvc9compiler import MSVCCompiler | 
					
						
							|  |  |  |         tempdir = self.mkdtemp() | 
					
						
							|  |  |  |         manifest = os.path.join(tempdir, 'manifest') | 
					
						
							|  |  |  |         f = open(manifest, 'w') | 
					
						
							|  |  |  |         f.write(_MANIFEST) | 
					
						
							|  |  |  |         f.close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         compiler = MSVCCompiler() | 
					
						
							|  |  |  |         compiler._remove_visual_c_ref(manifest) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # see what we got | 
					
						
							|  |  |  |         f = open(manifest) | 
					
						
							|  |  |  |         # removing trailing spaces | 
					
						
							|  |  |  |         content = '\n'.join([line.rstrip() for line in f.readlines()]) | 
					
						
							|  |  |  |         f.close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # makes sure the manifest was properly cleaned | 
					
						
							|  |  |  |         self.assertEquals(content, _CLEANED_MANIFEST) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-30 23:09:20 +00:00
										 |  |  | def test_suite(): | 
					
						
							|  |  |  |     return unittest.makeSuite(msvc9compilerTestCase) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     unittest.main(defaultTest="test_suite") |