| 
									
										
										
										
											2009-05-10 12:02:35 +00:00
										 |  |  | """Tests for distutils.sysconfig.""" | 
					
						
							| 
									
										
										
										
											2019-03-18 17:19:02 +01:00
										 |  |  | import contextlib | 
					
						
							| 
									
										
										
										
											2007-12-08 15:34:59 +00:00
										 |  |  | import os | 
					
						
							| 
									
										
										
										
											2010-11-20 19:35:27 +00:00
										 |  |  | import shutil | 
					
						
							| 
									
										
										
										
											2014-07-06 16:14:33 -07:00
										 |  |  | import subprocess | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | import textwrap | 
					
						
							| 
									
										
										
										
											2007-12-08 15:34:59 +00:00
										 |  |  | import unittest | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-10 12:02:35 +00:00
										 |  |  | from distutils import sysconfig | 
					
						
							| 
									
										
										
										
											2010-07-22 12:50:05 +00:00
										 |  |  | from distutils.ccompiler import get_default_compiler | 
					
						
							| 
									
										
										
										
											2009-05-10 12:02:35 +00:00
										 |  |  | from distutils.tests import support | 
					
						
							| 
									
										
										
										
											2019-03-15 14:57:52 +01:00
										 |  |  | from test.support import TESTFN, run_unittest, check_warnings, swap_item | 
					
						
							| 
									
										
										
										
											2007-12-08 15:34:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-22 15:31:35 -05:00
										 |  |  | class SysconfigTestCase(support.EnvironGuard, unittest.TestCase): | 
					
						
							| 
									
										
										
										
											2009-06-11 08:31:17 +00:00
										 |  |  |     def setUp(self): | 
					
						
							|  |  |  |         super(SysconfigTestCase, self).setUp() | 
					
						
							|  |  |  |         self.makefile = None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def tearDown(self): | 
					
						
							|  |  |  |         if self.makefile is not None: | 
					
						
							|  |  |  |             os.unlink(self.makefile) | 
					
						
							| 
									
										
										
										
											2009-10-18 11:34:51 +00:00
										 |  |  |         self.cleanup_testfn() | 
					
						
							| 
									
										
										
										
											2009-06-11 08:31:17 +00:00
										 |  |  |         super(SysconfigTestCase, self).tearDown() | 
					
						
							| 
									
										
										
										
											2009-02-06 01:18:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-18 11:34:51 +00:00
										 |  |  |     def cleanup_testfn(self): | 
					
						
							|  |  |  |         if os.path.isfile(TESTFN): | 
					
						
							|  |  |  |             os.remove(TESTFN) | 
					
						
							|  |  |  |         elif os.path.isdir(TESTFN): | 
					
						
							|  |  |  |             shutil.rmtree(TESTFN) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-22 12:50:05 +00:00
										 |  |  |     def test_get_config_h_filename(self): | 
					
						
							|  |  |  |         config_h = sysconfig.get_config_h_filename() | 
					
						
							|  |  |  |         self.assertTrue(os.path.isfile(config_h), config_h) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-08 15:34:59 +00:00
										 |  |  |     def test_get_python_lib(self): | 
					
						
							| 
									
										
											  
											
												Merged revisions 59488-59511 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r59489 | christian.heimes | 2007-12-14 03:33:57 +0100 (Fri, 14 Dec 2007) | 1 line
  Silence a warning about an unsed variable in debug builds
........
  r59490 | christian.heimes | 2007-12-14 03:35:23 +0100 (Fri, 14 Dec 2007) | 2 lines
  Fixed bug #1620: New @spam.getter property syntax modifies the property in place.
  I added also the feature that a @prop.getter decorator does not overwrite the doc string of the property if it was given as an argument to property().
........
  r59491 | raymond.hettinger | 2007-12-14 03:49:47 +0100 (Fri, 14 Dec 2007) | 1 line
  Cleaner method naming convention
........
  r59492 | christian.heimes | 2007-12-14 04:02:34 +0100 (Fri, 14 Dec 2007) | 1 line
  Fixed a warning in _codecs_iso2022.c and some non C89 conform // comments.
........
  r59493 | christian.heimes | 2007-12-14 05:38:13 +0100 (Fri, 14 Dec 2007) | 1 line
  Fixed warning in ssl module
........
  r59500 | raymond.hettinger | 2007-12-14 19:08:20 +0100 (Fri, 14 Dec 2007) | 1 line
  Add line spacing for readability
........
  r59501 | raymond.hettinger | 2007-12-14 19:12:21 +0100 (Fri, 14 Dec 2007) | 3 lines
  Update method names for named tuples.
........
  r59503 | georg.brandl | 2007-12-14 20:03:36 +0100 (Fri, 14 Dec 2007) | 3 lines
  Add a section about nested listcomps to the tutorial.
  Thanks to Ian Bruntlett and Robert Lehmann.
........
  r59504 | raymond.hettinger | 2007-12-14 20:19:59 +0100 (Fri, 14 Dec 2007) | 1 line
  Faster and simpler _replace() method
........
  r59505 | raymond.hettinger | 2007-12-14 22:51:50 +0100 (Fri, 14 Dec 2007) | 1 line
  Add usage note
........
  r59507 | andrew.kuchling | 2007-12-14 23:41:18 +0100 (Fri, 14 Dec 2007) | 1 line
  Remove warning about URL
........
  r59510 | andrew.kuchling | 2007-12-14 23:52:36 +0100 (Fri, 14 Dec 2007) | 1 line
  Bump the version number, and make a few small edits
........
  r59511 | christian.heimes | 2007-12-15 00:42:36 +0100 (Sat, 15 Dec 2007) | 2 lines
  Fixed bug #1628
  The detection now works on Unix with Makefile, Makefile with VPATH and on Windows.
........
											
										 
											2007-12-15 01:27:15 +00:00
										 |  |  |         # XXX doesn't work on Linux when Python was never installed before | 
					
						
							| 
									
										
										
										
											2009-06-30 23:06:06 +00:00
										 |  |  |         #self.assertTrue(os.path.isdir(lib_dir), lib_dir) | 
					
						
							| 
									
										
										
										
											2007-12-08 15:34:59 +00:00
										 |  |  |         # test for pythonxx.lib? | 
					
						
							| 
									
										
										
										
											2009-02-10 12:36:33 +00:00
										 |  |  |         self.assertNotEqual(sysconfig.get_python_lib(), | 
					
						
							|  |  |  |                             sysconfig.get_python_lib(prefix=TESTFN)) | 
					
						
							| 
									
										
										
										
											2007-12-08 15:34:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-22 12:50:05 +00:00
										 |  |  |     def test_get_config_vars(self): | 
					
						
							|  |  |  |         cvars = sysconfig.get_config_vars() | 
					
						
							| 
									
										
										
										
											2013-11-17 00:17:46 +02:00
										 |  |  |         self.assertIsInstance(cvars, dict) | 
					
						
							| 
									
										
										
										
											2010-07-22 12:50:05 +00:00
										 |  |  |         self.assertTrue(cvars) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-27 12:06:55 +01:00
										 |  |  |     def test_srcdir(self): | 
					
						
							|  |  |  |         # See Issues #15322, #15364. | 
					
						
							|  |  |  |         srcdir = sysconfig.get_config_var('srcdir') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.assertTrue(os.path.isabs(srcdir), srcdir) | 
					
						
							|  |  |  |         self.assertTrue(os.path.isdir(srcdir), srcdir) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if sysconfig.python_build: | 
					
						
							|  |  |  |             # The python executable has not been installed so srcdir | 
					
						
							|  |  |  |             # should be a full source checkout. | 
					
						
							|  |  |  |             Python_h = os.path.join(srcdir, 'Include', 'Python.h') | 
					
						
							|  |  |  |             self.assertTrue(os.path.exists(Python_h), Python_h) | 
					
						
							|  |  |  |             self.assertTrue(sysconfig._is_python_source_dir(srcdir)) | 
					
						
							|  |  |  |         elif os.name == 'posix': | 
					
						
							| 
									
										
										
										
											2013-11-22 15:31:35 -05:00
										 |  |  |             self.assertEqual( | 
					
						
							|  |  |  |                 os.path.dirname(sysconfig.get_makefile_filename()), | 
					
						
							|  |  |  |                 srcdir) | 
					
						
							| 
									
										
										
										
											2012-07-27 12:06:55 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_srcdir_independent_of_cwd(self): | 
					
						
							|  |  |  |         # srcdir should be independent of the current working directory | 
					
						
							|  |  |  |         # See Issues #15322, #15364. | 
					
						
							|  |  |  |         srcdir = sysconfig.get_config_var('srcdir') | 
					
						
							|  |  |  |         cwd = os.getcwd() | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             os.chdir('..') | 
					
						
							|  |  |  |             srcdir2 = sysconfig.get_config_var('srcdir') | 
					
						
							|  |  |  |         finally: | 
					
						
							|  |  |  |             os.chdir(cwd) | 
					
						
							|  |  |  |         self.assertEqual(srcdir, srcdir2) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-18 17:19:02 +01:00
										 |  |  |     def customize_compiler(self): | 
					
						
							| 
									
										
										
										
											2010-07-22 12:50:05 +00:00
										 |  |  |         # make sure AR gets caught | 
					
						
							|  |  |  |         class compiler: | 
					
						
							|  |  |  |             compiler_type = 'unix' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             def set_executables(self, **kw): | 
					
						
							|  |  |  |                 self.exes = kw | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-18 17:19:02 +01:00
										 |  |  |         sysconfig_vars = { | 
					
						
							|  |  |  |             'AR': 'sc_ar', | 
					
						
							|  |  |  |             'CC': 'sc_cc', | 
					
						
							|  |  |  |             'CXX': 'sc_cxx', | 
					
						
							|  |  |  |             'ARFLAGS': '--sc-arflags', | 
					
						
							|  |  |  |             'CFLAGS': '--sc-cflags', | 
					
						
							|  |  |  |             'CCSHARED': '--sc-ccshared', | 
					
						
							|  |  |  |             'LDSHARED': 'sc_ldshared', | 
					
						
							|  |  |  |             'SHLIB_SUFFIX': 'sc_shutil_suffix', | 
					
						
							| 
									
										
										
										
											2019-04-11 01:38:48 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |             # On macOS, disable _osx_support.customize_compiler() | 
					
						
							|  |  |  |             'CUSTOMIZED_OSX_COMPILER': 'True', | 
					
						
							| 
									
										
										
										
											2019-03-18 17:19:02 +01:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2019-03-15 14:57:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-22 12:50:05 +00:00
										 |  |  |         comp = compiler() | 
					
						
							| 
									
										
										
										
											2019-03-18 17:19:02 +01:00
										 |  |  |         with contextlib.ExitStack() as cm: | 
					
						
							|  |  |  |             for key, value in sysconfig_vars.items(): | 
					
						
							|  |  |  |                 cm.enter_context(swap_item(sysconfig._config_vars, key, value)) | 
					
						
							| 
									
										
										
										
											2019-03-15 14:57:52 +01:00
										 |  |  |             sysconfig.customize_compiler(comp) | 
					
						
							| 
									
										
										
										
											2019-03-18 17:19:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return comp | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @unittest.skipUnless(get_default_compiler() == 'unix', | 
					
						
							|  |  |  |                          'not testing if default compiler is not unix') | 
					
						
							|  |  |  |     def test_customize_compiler(self): | 
					
						
							|  |  |  |         # Make sure that sysconfig._config_vars is initialized | 
					
						
							|  |  |  |         sysconfig.get_config_vars() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         os.environ['AR'] = 'env_ar' | 
					
						
							|  |  |  |         os.environ['CC'] = 'env_cc' | 
					
						
							|  |  |  |         os.environ['CPP'] = 'env_cpp' | 
					
						
							|  |  |  |         os.environ['CXX'] = 'env_cxx --env-cxx-flags' | 
					
						
							|  |  |  |         os.environ['LDSHARED'] = 'env_ldshared' | 
					
						
							|  |  |  |         os.environ['LDFLAGS'] = '--env-ldflags' | 
					
						
							|  |  |  |         os.environ['ARFLAGS'] = '--env-arflags' | 
					
						
							|  |  |  |         os.environ['CFLAGS'] = '--env-cflags' | 
					
						
							|  |  |  |         os.environ['CPPFLAGS'] = '--env-cppflags' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         comp = self.customize_compiler() | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['archiver'], | 
					
						
							|  |  |  |                          'env_ar --env-arflags') | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['preprocessor'], | 
					
						
							|  |  |  |                          'env_cpp --env-cppflags') | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['compiler'], | 
					
						
							|  |  |  |                          'env_cc --sc-cflags --env-cflags --env-cppflags') | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['compiler_so'], | 
					
						
							|  |  |  |                          ('env_cc --sc-cflags ' | 
					
						
							|  |  |  |                           '--env-cflags ''--env-cppflags --sc-ccshared')) | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['compiler_cxx'], | 
					
						
							|  |  |  |                          'env_cxx --env-cxx-flags') | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['linker_exe'], | 
					
						
							|  |  |  |                          'env_cc') | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['linker_so'], | 
					
						
							|  |  |  |                          ('env_ldshared --env-ldflags --env-cflags' | 
					
						
							|  |  |  |                           ' --env-cppflags')) | 
					
						
							|  |  |  |         self.assertEqual(comp.shared_lib_extension, 'sc_shutil_suffix') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         del os.environ['AR'] | 
					
						
							|  |  |  |         del os.environ['CC'] | 
					
						
							|  |  |  |         del os.environ['CPP'] | 
					
						
							|  |  |  |         del os.environ['CXX'] | 
					
						
							|  |  |  |         del os.environ['LDSHARED'] | 
					
						
							|  |  |  |         del os.environ['LDFLAGS'] | 
					
						
							|  |  |  |         del os.environ['ARFLAGS'] | 
					
						
							|  |  |  |         del os.environ['CFLAGS'] | 
					
						
							|  |  |  |         del os.environ['CPPFLAGS'] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         comp = self.customize_compiler() | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['archiver'], | 
					
						
							|  |  |  |                          'sc_ar --sc-arflags') | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['preprocessor'], | 
					
						
							|  |  |  |                          'sc_cc -E') | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['compiler'], | 
					
						
							|  |  |  |                          'sc_cc --sc-cflags') | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['compiler_so'], | 
					
						
							|  |  |  |                          'sc_cc --sc-cflags --sc-ccshared') | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['compiler_cxx'], | 
					
						
							|  |  |  |                          'sc_cxx') | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['linker_exe'], | 
					
						
							|  |  |  |                          'sc_cc') | 
					
						
							|  |  |  |         self.assertEqual(comp.exes['linker_so'], | 
					
						
							|  |  |  |                          'sc_ldshared') | 
					
						
							|  |  |  |         self.assertEqual(comp.shared_lib_extension, 'sc_shutil_suffix') | 
					
						
							| 
									
										
										
										
											2010-07-22 12:50:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-11 08:31:17 +00:00
										 |  |  |     def test_parse_makefile_base(self): | 
					
						
							|  |  |  |         self.makefile = TESTFN | 
					
						
							|  |  |  |         fd = open(self.makefile, 'w') | 
					
						
							| 
									
										
										
										
											2010-11-05 23:51:56 +00:00
										 |  |  |         try: | 
					
						
							|  |  |  |             fd.write(r"CONFIG_ARGS=  '--arg1=optarg1' 'ENV=LIB'" '\n') | 
					
						
							|  |  |  |             fd.write('VAR=$OTHER\nOTHER=foo') | 
					
						
							|  |  |  |         finally: | 
					
						
							|  |  |  |             fd.close() | 
					
						
							| 
									
										
										
										
											2009-06-11 08:31:17 +00:00
										 |  |  |         d = sysconfig.parse_makefile(self.makefile) | 
					
						
							| 
									
										
										
										
											2010-11-20 19:04:17 +00:00
										 |  |  |         self.assertEqual(d, {'CONFIG_ARGS': "'--arg1=optarg1' 'ENV=LIB'", | 
					
						
							|  |  |  |                              'OTHER': 'foo'}) | 
					
						
							| 
									
										
										
										
											2009-06-11 08:31:17 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_parse_makefile_literal_dollar(self): | 
					
						
							|  |  |  |         self.makefile = TESTFN | 
					
						
							|  |  |  |         fd = open(self.makefile, 'w') | 
					
						
							| 
									
										
										
										
											2010-11-05 23:51:56 +00:00
										 |  |  |         try: | 
					
						
							|  |  |  |             fd.write(r"CONFIG_ARGS=  '--arg1=optarg1' 'ENV=\$$LIB'" '\n') | 
					
						
							|  |  |  |             fd.write('VAR=$OTHER\nOTHER=foo') | 
					
						
							|  |  |  |         finally: | 
					
						
							|  |  |  |             fd.close() | 
					
						
							| 
									
										
										
										
											2009-06-11 08:31:17 +00:00
										 |  |  |         d = sysconfig.parse_makefile(self.makefile) | 
					
						
							| 
									
										
										
										
											2010-11-20 19:04:17 +00:00
										 |  |  |         self.assertEqual(d, {'CONFIG_ARGS': r"'--arg1=optarg1' 'ENV=\$LIB'", | 
					
						
							|  |  |  |                              'OTHER': 'foo'}) | 
					
						
							| 
									
										
										
										
											2009-06-11 08:31:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-08 15:34:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-23 09:43:17 +00:00
										 |  |  |     def test_sysconfig_module(self): | 
					
						
							|  |  |  |         import sysconfig as global_sysconfig | 
					
						
							| 
									
										
										
										
											2013-11-22 15:31:35 -05:00
										 |  |  |         self.assertEqual(global_sysconfig.get_config_var('CFLAGS'), | 
					
						
							|  |  |  |                          sysconfig.get_config_var('CFLAGS')) | 
					
						
							|  |  |  |         self.assertEqual(global_sysconfig.get_config_var('LDFLAGS'), | 
					
						
							|  |  |  |                          sysconfig.get_config_var('LDFLAGS')) | 
					
						
							| 
									
										
										
										
											2012-07-22 02:56:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-22 15:31:35 -05:00
										 |  |  |     @unittest.skipIf(sysconfig.get_config_var('CUSTOMIZED_OSX_COMPILER'), | 
					
						
							|  |  |  |                      'compiler flags customized') | 
					
						
							| 
									
										
										
										
											2012-07-22 02:56:36 -07:00
										 |  |  |     def test_sysconfig_compiler_vars(self): | 
					
						
							|  |  |  |         # On OS X, binary installers support extension module building on | 
					
						
							|  |  |  |         # various levels of the operating system with differing Xcode | 
					
						
							|  |  |  |         # configurations.  This requires customization of some of the | 
					
						
							|  |  |  |         # compiler configuration directives to suit the environment on | 
					
						
							|  |  |  |         # the installed machine.  Some of these customizations may require | 
					
						
							|  |  |  |         # running external programs and, so, are deferred until needed by | 
					
						
							|  |  |  |         # the first extension module build.  With Python 3.3, only | 
					
						
							|  |  |  |         # the Distutils version of sysconfig is used for extension module | 
					
						
							|  |  |  |         # builds, which happens earlier in the Distutils tests.  This may | 
					
						
							|  |  |  |         # cause the following tests to fail since no tests have caused | 
					
						
							|  |  |  |         # the global version of sysconfig to call the customization yet. | 
					
						
							|  |  |  |         # The solution for now is to simply skip this test in this case. | 
					
						
							|  |  |  |         # The longer-term solution is to only have one version of sysconfig. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         import sysconfig as global_sysconfig | 
					
						
							|  |  |  |         if sysconfig.get_config_var('CUSTOMIZED_OSX_COMPILER'): | 
					
						
							| 
									
										
										
										
											2013-12-18 16:41:01 +02:00
										 |  |  |             self.skipTest('compiler flags customized') | 
					
						
							| 
									
										
										
										
											2013-11-22 15:31:35 -05:00
										 |  |  |         self.assertEqual(global_sysconfig.get_config_var('LDSHARED'), | 
					
						
							|  |  |  |                          sysconfig.get_config_var('LDSHARED')) | 
					
						
							|  |  |  |         self.assertEqual(global_sysconfig.get_config_var('CC'), | 
					
						
							|  |  |  |                          sysconfig.get_config_var('CC')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @unittest.skipIf(sysconfig.get_config_var('EXT_SUFFIX') is None, | 
					
						
							|  |  |  |                      'EXT_SUFFIX required for this test') | 
					
						
							|  |  |  |     def test_SO_deprecation(self): | 
					
						
							|  |  |  |         self.assertWarns(DeprecationWarning, | 
					
						
							|  |  |  |                          sysconfig.get_config_var, 'SO') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @unittest.skipIf(sysconfig.get_config_var('EXT_SUFFIX') is None, | 
					
						
							|  |  |  |                      'EXT_SUFFIX required for this test') | 
					
						
							|  |  |  |     def test_SO_value(self): | 
					
						
							| 
									
										
										
										
											2013-11-26 17:08:24 +02:00
										 |  |  |         with check_warnings(('', DeprecationWarning)): | 
					
						
							|  |  |  |             self.assertEqual(sysconfig.get_config_var('SO'), | 
					
						
							|  |  |  |                              sysconfig.get_config_var('EXT_SUFFIX')) | 
					
						
							| 
									
										
										
										
											2013-11-22 15:31:35 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     @unittest.skipIf(sysconfig.get_config_var('EXT_SUFFIX') is None, | 
					
						
							|  |  |  |                      'EXT_SUFFIX required for this test') | 
					
						
							|  |  |  |     def test_SO_in_vars(self): | 
					
						
							|  |  |  |         vars = sysconfig.get_config_vars() | 
					
						
							|  |  |  |         self.assertIsNotNone(vars['SO']) | 
					
						
							|  |  |  |         self.assertEqual(vars['SO'], vars['EXT_SUFFIX']) | 
					
						
							| 
									
										
										
										
											2010-07-23 09:43:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-06 16:14:33 -07:00
										 |  |  |     def test_customize_compiler_before_get_config_vars(self): | 
					
						
							|  |  |  |         # Issue #21923: test that a Distribution compiler | 
					
						
							|  |  |  |         # instance can be called without an explicit call to | 
					
						
							|  |  |  |         # get_config_vars(). | 
					
						
							|  |  |  |         with open(TESTFN, 'w') as f: | 
					
						
							|  |  |  |             f.writelines(textwrap.dedent('''\
 | 
					
						
							|  |  |  |                 from distutils.core import Distribution | 
					
						
							|  |  |  |                 config = Distribution().get_command_obj('config') | 
					
						
							|  |  |  |                 # try_compile may pass or it may fail if no compiler | 
					
						
							|  |  |  |                 # is found but it should not raise an exception. | 
					
						
							|  |  |  |                 rc = config.try_compile('int x;') | 
					
						
							|  |  |  |                 '''))
 | 
					
						
							|  |  |  |         p = subprocess.Popen([str(sys.executable), TESTFN], | 
					
						
							|  |  |  |                 stdout=subprocess.PIPE, | 
					
						
							|  |  |  |                 stderr=subprocess.STDOUT, | 
					
						
							|  |  |  |                 universal_newlines=True) | 
					
						
							|  |  |  |         outs, errs = p.communicate() | 
					
						
							|  |  |  |         self.assertEqual(0, p.returncode, "Subprocess failed: " + outs) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-23 09:43:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-08 15:34:59 +00:00
										 |  |  | def test_suite(): | 
					
						
							|  |  |  |     suite = unittest.TestSuite() | 
					
						
							|  |  |  |     suite.addTest(unittest.makeSuite(SysconfigTestCase)) | 
					
						
							|  |  |  |     return suite | 
					
						
							| 
									
										
										
										
											2009-06-11 08:31:17 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     run_unittest(test_suite()) |