summaryrefslogtreecommitdiffstats
path: root/Lib/distutils/tests
diff options
context:
space:
mode:
authorRonald Oussoren <ronaldoussoren@mac.com>2011-05-15 14:44:27 (GMT)
committerRonald Oussoren <ronaldoussoren@mac.com>2011-05-15 14:44:27 (GMT)
commita70286b71d6b98c14275c26f6ca1f0507c1bc56b (patch)
treeb6b408265b1f73561e2ff80fa03fd817b0a8e65a /Lib/distutils/tests
parent11041f0af94aec94500a5fd65f709d9de00bc943 (diff)
downloadcpython-a70286b71d6b98c14275c26f6ca1f0507c1bc56b.zip
cpython-a70286b71d6b98c14275c26f6ca1f0507c1bc56b.tar.gz
cpython-a70286b71d6b98c14275c26f6ca1f0507c1bc56b.tar.bz2
Issue #9516: avoid errors in sysconfig when MACOSX_DEPLOYMENT_TARGET is set in shell.
Without this patch python will fail to start properly when the environment variable MACOSX_DEPLOYMENT_TARGET is set on MacOSX and has a value that is not compatible with the value during Python's build. This is caused by code in sysconfig that was only meant to be used in disutils.
Diffstat (limited to 'Lib/distutils/tests')
-rw-r--r--Lib/distutils/tests/test_build_ext.py56
1 files changed, 55 insertions, 1 deletions
diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py
index 86568eb..46dcb5e 100644
--- a/Lib/distutils/tests/test_build_ext.py
+++ b/Lib/distutils/tests/test_build_ext.py
@@ -3,12 +3,13 @@ import os
import tempfile
import shutil
from StringIO import StringIO
+import textwrap
from distutils.core import Extension, Distribution
from distutils.command.build_ext import build_ext
from distutils import sysconfig
from distutils.tests import support
-from distutils.errors import DistutilsSetupError
+from distutils.errors import DistutilsSetupError, CompileError
import unittest
from test import test_support
@@ -430,6 +431,59 @@ class BuildExtTestCase(support.TempdirManager,
wanted = os.path.join(cmd.build_lib, 'UpdateManager', 'fdsend' + ext)
self.assertEqual(ext_path, wanted)
+ @unittest.skipUnless(sys.platform == 'darwin', 'test only relevant for MacOSX')
+ def test_deployment_target(self):
+ self._try_compile_deployment_target()
+
+ orig_environ = os.environ
+ os.environ = orig_environ.copy()
+ self.addCleanup(setattr, os, 'environ', orig_environ)
+
+ os.environ['MACOSX_DEPLOYMENT_TARGET']='10.1'
+ self._try_compile_deployment_target()
+
+
+ def _try_compile_deployment_target(self):
+ deptarget_c = os.path.join(self.tmp_dir, 'deptargetmodule.c')
+
+ with open(deptarget_c, 'w') as fp:
+ fp.write(textwrap.dedent('''\
+ #include <AvailabilityMacros.h>
+
+ int dummy;
+
+ #if TARGET != MAC_OS_X_VERSION_MIN_REQUIRED
+ #error "Unexpected target"
+ #endif
+
+ '''))
+
+ target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')
+ target = tuple(map(int, target.split('.')))
+ target = '%02d%01d0' % target
+
+ deptarget_ext = Extension(
+ 'deptarget',
+ [deptarget_c],
+ extra_compile_args=['-DTARGET=%s'%(target,)],
+ )
+ dist = Distribution({
+ 'name': 'deptarget',
+ 'ext_modules': [deptarget_ext]
+ })
+ dist.package_dir = self.tmp_dir
+ cmd = build_ext(dist)
+ cmd.build_lib = self.tmp_dir
+ cmd.build_temp = self.tmp_dir
+
+ try:
+ old_stdout = sys.stdout
+ cmd.ensure_finalized()
+ cmd.run()
+
+ except CompileError:
+ self.fail("Wrong deployment target during compilation")
+
def test_suite():
return unittest.makeSuite(BuildExtTestCase)