summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorNed Deily <nad@acm.org>2011-06-29 02:39:10 (GMT)
committerNed Deily <nad@acm.org>2011-06-29 02:39:10 (GMT)
commit053c6ad6b7ee88d9076a91f47aa53dc7155d00ce (patch)
treebcfb93390758845ba9f55ca12dd0ca5de7a5fdf1 /Lib
parent1ce5d181d7f696fd6b3f86c8ba836a047ff80c62 (diff)
downloadcpython-053c6ad6b7ee88d9076a91f47aa53dc7155d00ce.zip
cpython-053c6ad6b7ee88d9076a91f47aa53dc7155d00ce.tar.gz
cpython-053c6ad6b7ee88d9076a91f47aa53dc7155d00ce.tar.bz2
Issue #9516: Correct and expand OS X deployment target tests in distutils
test_build_ext.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/distutils/tests/test_build_ext.py49
1 files changed, 38 insertions, 11 deletions
diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py
index 44fc980..ced1329 100644
--- a/Lib/distutils/tests/test_build_ext.py
+++ b/Lib/distutils/tests/test_build_ext.py
@@ -9,7 +9,8 @@ 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, CompileError
+from distutils.errors import (DistutilsSetupError, CompileError,
+ DistutilsPlatformError)
import unittest
from test import test_support
@@ -437,18 +438,43 @@ class BuildExtTestCase(support.TempdirManager,
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()
+ def test_deployment_target_default(self):
+ # Issue 9516: Test that, in the absence of the environment variable,
+ # an extension module is compiled with the same deployment target as
+ # the interpreter.
+ self._try_compile_deployment_target('==', None)
+ @unittest.skipUnless(sys.platform == 'darwin', 'test only relevant for MacOSX')
+ def test_deployment_target_too_low(self):
+ # Issue 9516: Test that an extension module is not allowed to be
+ # compiled with a deployment target less than that of the interpreter.
+ self.assertRaises(DistutilsPlatformError,
+ self._try_compile_deployment_target, '>', '10.1')
+
+ @unittest.skipUnless(sys.platform == 'darwin', 'test only relevant for MacOSX')
+ def test_deployment_target_higher_ok(self):
+ # Issue 9516: Test that an extension module can be compiled with a
+ # deployment target higher than that of the interpreter: the ext
+ # module may depend on some newer OS feature.
+ deptarget = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')
+ if deptarget:
+ # increment the minor version number (i.e. 10.6 -> 10.7)
+ deptarget = [int(x) for x in deptarget.split('.')]
+ deptarget[-1] += 1
+ deptarget = '.'.join(str(i) for i in deptarget)
+ self._try_compile_deployment_target('<', deptarget)
+
+ def _try_compile_deployment_target(self, operator, 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()
-
+ if target is None:
+ if os.environ.get('MACOSX_DEPLOYMENT_TARGET'):
+ del os.environ['MACOSX_DEPLOYMENT_TARGET']
+ else:
+ os.environ['MACOSX_DEPLOYMENT_TARGET'] = target
- def _try_compile_deployment_target(self):
deptarget_c = os.path.join(self.tmp_dir, 'deptargetmodule.c')
with open(deptarget_c, 'w') as fp:
@@ -457,16 +483,17 @@ class BuildExtTestCase(support.TempdirManager,
int dummy;
- #if TARGET != MAC_OS_X_VERSION_MIN_REQUIRED
+ #if TARGET %s MAC_OS_X_VERSION_MIN_REQUIRED
+ #else
#error "Unexpected target"
- #endif
+ #endif
- '''))
+ ''' % operator))
+ # get the deployment target that the interpreter was built with
target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')
target = tuple(map(int, target.split('.')))
target = '%02d%01d0' % target
-
deptarget_ext = Extension(
'deptarget',
[deptarget_c],