[Python-checkins] r78712 - python/trunk/Lib/distutils/tests/test_build_ext.py

tarek.ziade python-checkins at python.org
Sat Mar 6 03:11:14 CET 2010


Author: tarek.ziade
Date: Sat Mar 6 03:11:14 2010
New Revision: 78712
Log:
fixed various failures and environment alterations in distutils.test_build_ext
Modified:
 python/trunk/Lib/distutils/tests/test_build_ext.py
Modified: python/trunk/Lib/distutils/tests/test_build_ext.py
==============================================================================
--- python/trunk/Lib/distutils/tests/test_build_ext.py	(original)
+++ python/trunk/Lib/distutils/tests/test_build_ext.py	Sat Mar 6 03:11:14 2010
@@ -19,10 +19,15 @@
 
 def _get_source_filename():
 srcdir = sysconfig.get_config_var('srcdir')
+ fallback_path = os.path.join(os.path.dirname(__file__), 'xxmodule.c')
 if srcdir is None:
- # local fallback
- return os.path.join(os.path.dirname(__file__), 'xxmodule.c')
- return os.path.join(srcdir, 'Modules', 'xxmodule.c')
+ return fallback_path
+ locations = (srcdir, os.path.dirname(sys.executable))
+ for location in locations:
+ path = os.path.join(location, 'Modules', 'xxmodule.c')
+ if os.path.exists(path):
+ return path
+ return fallback_path
 
 class BuildExtTestCase(support.TempdirManager,
 support.LoggingSilencer,
@@ -81,7 +86,7 @@
 def tearDown(self):
 # Get everything back to normal
 test_support.unload('xx')
- sys.path = self.sys_path
+ sys.path[:] = self.sys_path
 # XXX on Windows the test leaves a directory with xx module in TEMP
 shutil.rmtree(self.tmp_dir, os.name == 'nt' or sys.platform == 'cygwin')
 super(BuildExtTestCase, self).tearDown()
@@ -350,22 +355,31 @@
 self.assertEquals(wanted, path)
 
 def test_setuptools_compat(self):
- from setuptools_build_ext import build_ext as setuptools_build_ext
- from setuptools_extension import Extension
-
- etree_c = os.path.join(self.tmp_dir, 'lxml.etree.c')
- etree_ext = Extension('lxml.etree', [etree_c])
- dist = Distribution({'name': 'lxml', 'ext_modules': [etree_ext]})
- cmd = setuptools_build_ext(dist)
- cmd.ensure_finalized()
- cmd.inplace = 1
- cmd.distribution.package_dir = {'': 'src'}
- cmd.distribution.packages = ['lxml', 'lxml.html']
- curdir = os.getcwd()
- ext = sysconfig.get_config_var("SO")
- wanted = os.path.join(curdir, 'src', 'lxml', 'etree' + ext)
- path = cmd.get_ext_fullpath('lxml.etree')
- self.assertEquals(wanted, path)
+ import distutils.core, distutils.extension, distutils.command.build_ext
+ saved_ext = distutils.extension.Extension
+ try:
+ # theses import patch Distutils' Extension class
+ from setuptools_build_ext import build_ext as setuptools_build_ext
+ from setuptools_extension import Extension
+
+ etree_c = os.path.join(self.tmp_dir, 'lxml.etree.c')
+ etree_ext = Extension('lxml.etree', [etree_c])
+ dist = Distribution({'name': 'lxml', 'ext_modules': [etree_ext]})
+ cmd = setuptools_build_ext(dist)
+ cmd.ensure_finalized()
+ cmd.inplace = 1
+ cmd.distribution.package_dir = {'': 'src'}
+ cmd.distribution.packages = ['lxml', 'lxml.html']
+ curdir = os.getcwd()
+ ext = sysconfig.get_config_var("SO")
+ wanted = os.path.join(curdir, 'src', 'lxml', 'etree' + ext)
+ path = cmd.get_ext_fullpath('lxml.etree')
+ self.assertEquals(wanted, path)
+ finally:
+ # restoring Distutils' Extension class otherwise its broken
+ distutils.extension.Extension = saved_ext
+ distutils.core.Extension = saved_ext
+ distutils.command.build_ext.Extension = saved_ext
 
 def test_build_ext_path_with_os_sep(self):
 dist = Distribution({'name': 'UpdateManager'})
@@ -391,13 +405,7 @@
 self.assertEquals(ext_path, wanted)
 
 def test_suite():
- src = _get_source_filename()
- if not os.path.exists(src):
- if test_support.verbose:
- print ('test_build_ext: Cannot find source code (test'
- ' must run in python build dir)')
- return unittest.TestSuite()
- else: return unittest.makeSuite(BuildExtTestCase)
+ return unittest.makeSuite(BuildExtTestCase)
 
 if __name__ == '__main__':
 test_support.run_unittest(test_suite())


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /