]> git.proxmox.com Git - mirror_edk2.git/blobdiff - AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_ext.py
edk2: Remove AppPkg, StdLib, StdLibPrivateInternalFiles
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Lib / distutils / tests / test_build_ext.py
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_ext.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_ext.py
deleted file mode 100644 (file)
index 6543965..0000000
+++ /dev/null
@@ -1,491 +0,0 @@
-import sys\r
-import os\r
-import tempfile\r
-import shutil\r
-from StringIO import StringIO\r
-import textwrap\r
-\r
-from distutils.core import Extension, Distribution\r
-from distutils.command.build_ext import build_ext\r
-from distutils import sysconfig\r
-from distutils.tests import support\r
-from distutils.errors import DistutilsSetupError, CompileError\r
-\r
-import unittest\r
-from test import test_support\r
-\r
-# http://bugs.python.org/issue4373\r
-# Don't load the xx module more than once.\r
-ALREADY_TESTED = False\r
-\r
-def _get_source_filename():\r
-    srcdir = sysconfig.get_config_var('srcdir')\r
-    if srcdir is None:\r
-        return os.path.join(sysconfig.project_base, 'Modules', 'xxmodule.c')\r
-    return os.path.join(srcdir, 'Modules', 'xxmodule.c')\r
-\r
-_XX_MODULE_PATH = _get_source_filename()\r
-\r
-class BuildExtTestCase(support.TempdirManager,\r
-                       support.LoggingSilencer,\r
-                       unittest.TestCase):\r
-    def setUp(self):\r
-        # Create a simple test environment\r
-        # Note that we're making changes to sys.path\r
-        super(BuildExtTestCase, self).setUp()\r
-        self.tmp_dir = tempfile.mkdtemp(prefix="pythontest_")\r
-        if os.path.exists(_XX_MODULE_PATH):\r
-            self.sys_path = sys.path[:]\r
-            sys.path.append(self.tmp_dir)\r
-            shutil.copy(_XX_MODULE_PATH, self.tmp_dir)\r
-\r
-    def tearDown(self):\r
-        # Get everything back to normal\r
-        if os.path.exists(_XX_MODULE_PATH):\r
-            test_support.unload('xx')\r
-            sys.path[:] = self.sys_path\r
-            # XXX on Windows the test leaves a directory\r
-            # with xx module in TEMP\r
-        shutil.rmtree(self.tmp_dir, os.name == 'nt' or\r
-                                    sys.platform == 'cygwin')\r
-        super(BuildExtTestCase, self).tearDown()\r
-\r
-    def _fixup_command(self, cmd):\r
-        # When Python was build with --enable-shared, -L. is not good enough\r
-        # to find the libpython<blah>.so.  This is because regrtest runs it\r
-        # under a tempdir, not in the top level where the .so lives.  By the\r
-        # time we've gotten here, Python's already been chdir'd to the\r
-        # tempdir.\r
-        #\r
-        # To further add to the fun, we can't just add library_dirs to the\r
-        # Extension() instance because that doesn't get plumbed through to the\r
-        # final compiler command.\r
-        if (sysconfig.get_config_var('Py_ENABLE_SHARED') and\r
-            not sys.platform.startswith('win')):\r
-            runshared = sysconfig.get_config_var('RUNSHARED')\r
-            if runshared is None:\r
-                cmd.library_dirs = ['.']\r
-            else:\r
-                name, equals, value = runshared.partition('=')\r
-                cmd.library_dirs = value.split(os.pathsep)\r
-\r
-    @unittest.skipIf(not os.path.exists(_XX_MODULE_PATH),\r
-                     'xxmodule.c not found')\r
-    def test_build_ext(self):\r
-        global ALREADY_TESTED\r
-        xx_c = os.path.join(self.tmp_dir, 'xxmodule.c')\r
-        xx_ext = Extension('xx', [xx_c])\r
-        dist = Distribution({'name': 'xx', 'ext_modules': [xx_ext]})\r
-        dist.package_dir = self.tmp_dir\r
-        cmd = build_ext(dist)\r
-        self._fixup_command(cmd)\r
-        if os.name == "nt":\r
-            # On Windows, we must build a debug version iff running\r
-            # a debug build of Python\r
-            cmd.debug = sys.executable.endswith("_d.exe")\r
-        cmd.build_lib = self.tmp_dir\r
-        cmd.build_temp = self.tmp_dir\r
-\r
-        old_stdout = sys.stdout\r
-        if not test_support.verbose:\r
-            # silence compiler output\r
-            sys.stdout = StringIO()\r
-        try:\r
-            cmd.ensure_finalized()\r
-            cmd.run()\r
-        finally:\r
-            sys.stdout = old_stdout\r
-\r
-        if ALREADY_TESTED:\r
-            return\r
-        else:\r
-            ALREADY_TESTED = True\r
-\r
-        import xx\r
-\r
-        for attr in ('error', 'foo', 'new', 'roj'):\r
-            self.assertTrue(hasattr(xx, attr))\r
-\r
-        self.assertEqual(xx.foo(2, 5), 7)\r
-        self.assertEqual(xx.foo(13,15), 28)\r
-        self.assertEqual(xx.new().demo(), None)\r
-        doc = 'This is a template module just for instruction.'\r
-        self.assertEqual(xx.__doc__, doc)\r
-        self.assertTrue(isinstance(xx.Null(), xx.Null))\r
-        self.assertTrue(isinstance(xx.Str(), xx.Str))\r
-\r
-    def test_solaris_enable_shared(self):\r
-        dist = Distribution({'name': 'xx'})\r
-        cmd = build_ext(dist)\r
-        old = sys.platform\r
-\r
-        sys.platform = 'sunos' # fooling finalize_options\r
-        from distutils.sysconfig import  _config_vars\r
-        old_var = _config_vars.get('Py_ENABLE_SHARED')\r
-        _config_vars['Py_ENABLE_SHARED'] = 1\r
-        try:\r
-            cmd.ensure_finalized()\r
-        finally:\r
-            sys.platform = old\r
-            if old_var is None:\r
-                del _config_vars['Py_ENABLE_SHARED']\r
-            else:\r
-                _config_vars['Py_ENABLE_SHARED'] = old_var\r
-\r
-        # make sure we get some library dirs under solaris\r
-        self.assertTrue(len(cmd.library_dirs) > 0)\r
-\r
-    def test_finalize_options(self):\r
-        # Make sure Python's include directories (for Python.h, pyconfig.h,\r
-        # etc.) are in the include search path.\r
-        modules = [Extension('foo', ['xxx'])]\r
-        dist = Distribution({'name': 'xx', 'ext_modules': modules})\r
-        cmd = build_ext(dist)\r
-        cmd.finalize_options()\r
-\r
-        from distutils import sysconfig\r
-        py_include = sysconfig.get_python_inc()\r
-        self.assertTrue(py_include in cmd.include_dirs)\r
-\r
-        plat_py_include = sysconfig.get_python_inc(plat_specific=1)\r
-        self.assertTrue(plat_py_include in cmd.include_dirs)\r
-\r
-        # make sure cmd.libraries is turned into a list\r
-        # if it's a string\r
-        cmd = build_ext(dist)\r
-        cmd.libraries = 'my_lib'\r
-        cmd.finalize_options()\r
-        self.assertEqual(cmd.libraries, ['my_lib'])\r
-\r
-        # make sure cmd.library_dirs is turned into a list\r
-        # if it's a string\r
-        cmd = build_ext(dist)\r
-        cmd.library_dirs = 'my_lib_dir'\r
-        cmd.finalize_options()\r
-        self.assertTrue('my_lib_dir' in cmd.library_dirs)\r
-\r
-        # make sure rpath is turned into a list\r
-        # if it's a list of os.pathsep's paths\r
-        cmd = build_ext(dist)\r
-        cmd.rpath = os.pathsep.join(['one', 'two'])\r
-        cmd.finalize_options()\r
-        self.assertEqual(cmd.rpath, ['one', 'two'])\r
-\r
-        # XXX more tests to perform for win32\r
-\r
-        # make sure define is turned into 2-tuples\r
-        # strings if they are ','-separated strings\r
-        cmd = build_ext(dist)\r
-        cmd.define = 'one,two'\r
-        cmd.finalize_options()\r
-        self.assertEqual(cmd.define, [('one', '1'), ('two', '1')])\r
-\r
-        # make sure undef is turned into a list of\r
-        # strings if they are ','-separated strings\r
-        cmd = build_ext(dist)\r
-        cmd.undef = 'one,two'\r
-        cmd.finalize_options()\r
-        self.assertEqual(cmd.undef, ['one', 'two'])\r
-\r
-        # make sure swig_opts is turned into a list\r
-        cmd = build_ext(dist)\r
-        cmd.swig_opts = None\r
-        cmd.finalize_options()\r
-        self.assertEqual(cmd.swig_opts, [])\r
-\r
-        cmd = build_ext(dist)\r
-        cmd.swig_opts = '1 2'\r
-        cmd.finalize_options()\r
-        self.assertEqual(cmd.swig_opts, ['1', '2'])\r
-\r
-    def test_check_extensions_list(self):\r
-        dist = Distribution()\r
-        cmd = build_ext(dist)\r
-        cmd.finalize_options()\r
-\r
-        #'extensions' option must be a list of Extension instances\r
-        self.assertRaises(DistutilsSetupError, cmd.check_extensions_list, 'foo')\r
-\r
-        # each element of 'ext_modules' option must be an\r
-        # Extension instance or 2-tuple\r
-        exts = [('bar', 'foo', 'bar'), 'foo']\r
-        self.assertRaises(DistutilsSetupError, cmd.check_extensions_list, exts)\r
-\r
-        # first element of each tuple in 'ext_modules'\r
-        # must be the extension name (a string) and match\r
-        # a python dotted-separated name\r
-        exts = [('foo-bar', '')]\r
-        self.assertRaises(DistutilsSetupError, cmd.check_extensions_list, exts)\r
-\r
-        # second element of each tuple in 'ext_modules'\r
-        # must be a ary (build info)\r
-        exts = [('foo.bar', '')]\r
-        self.assertRaises(DistutilsSetupError, cmd.check_extensions_list, exts)\r
-\r
-        # ok this one should pass\r
-        exts = [('foo.bar', {'sources': [''], 'libraries': 'foo',\r
-                             'some': 'bar'})]\r
-        cmd.check_extensions_list(exts)\r
-        ext = exts[0]\r
-        self.assertTrue(isinstance(ext, Extension))\r
-\r
-        # check_extensions_list adds in ext the values passed\r
-        # when they are in ('include_dirs', 'library_dirs', 'libraries'\r
-        # 'extra_objects', 'extra_compile_args', 'extra_link_args')\r
-        self.assertEqual(ext.libraries, 'foo')\r
-        self.assertTrue(not hasattr(ext, 'some'))\r
-\r
-        # 'macros' element of build info dict must be 1- or 2-tuple\r
-        exts = [('foo.bar', {'sources': [''], 'libraries': 'foo',\r
-                'some': 'bar', 'macros': [('1', '2', '3'), 'foo']})]\r
-        self.assertRaises(DistutilsSetupError, cmd.check_extensions_list, exts)\r
-\r
-        exts[0][1]['macros'] = [('1', '2'), ('3',)]\r
-        cmd.check_extensions_list(exts)\r
-        self.assertEqual(exts[0].undef_macros, ['3'])\r
-        self.assertEqual(exts[0].define_macros, [('1', '2')])\r
-\r
-    def test_get_source_files(self):\r
-        modules = [Extension('foo', ['xxx'])]\r
-        dist = Distribution({'name': 'xx', 'ext_modules': modules})\r
-        cmd = build_ext(dist)\r
-        cmd.ensure_finalized()\r
-        self.assertEqual(cmd.get_source_files(), ['xxx'])\r
-\r
-    def test_compiler_option(self):\r
-        # cmd.compiler is an option and\r
-        # should not be overriden by a compiler instance\r
-        # when the command is run\r
-        dist = Distribution()\r
-        cmd = build_ext(dist)\r
-        cmd.compiler = 'unix'\r
-        cmd.ensure_finalized()\r
-        cmd.run()\r
-        self.assertEqual(cmd.compiler, 'unix')\r
-\r
-    def test_get_outputs(self):\r
-        tmp_dir = self.mkdtemp()\r
-        c_file = os.path.join(tmp_dir, 'foo.c')\r
-        self.write_file(c_file, 'void initfoo(void) {};\n')\r
-        ext = Extension('foo', [c_file])\r
-        dist = Distribution({'name': 'xx',\r
-                             'ext_modules': [ext]})\r
-        cmd = build_ext(dist)\r
-        self._fixup_command(cmd)\r
-        cmd.ensure_finalized()\r
-        self.assertEqual(len(cmd.get_outputs()), 1)\r
-\r
-        if os.name == "nt":\r
-            cmd.debug = sys.executable.endswith("_d.exe")\r
-\r
-        cmd.build_lib = os.path.join(self.tmp_dir, 'build')\r
-        cmd.build_temp = os.path.join(self.tmp_dir, 'tempt')\r
-\r
-        # issue #5977 : distutils build_ext.get_outputs\r
-        # returns wrong result with --inplace\r
-        other_tmp_dir = os.path.realpath(self.mkdtemp())\r
-        old_wd = os.getcwd()\r
-        os.chdir(other_tmp_dir)\r
-        try:\r
-            cmd.inplace = 1\r
-            cmd.run()\r
-            so_file = cmd.get_outputs()[0]\r
-        finally:\r
-            os.chdir(old_wd)\r
-        self.assertTrue(os.path.exists(so_file))\r
-        self.assertEqual(os.path.splitext(so_file)[-1],\r
-                         sysconfig.get_config_var('SO'))\r
-        so_dir = os.path.dirname(so_file)\r
-        self.assertEqual(so_dir, other_tmp_dir)\r
-        cmd.compiler = None\r
-        cmd.inplace = 0\r
-        cmd.run()\r
-        so_file = cmd.get_outputs()[0]\r
-        self.assertTrue(os.path.exists(so_file))\r
-        self.assertEqual(os.path.splitext(so_file)[-1],\r
-                         sysconfig.get_config_var('SO'))\r
-        so_dir = os.path.dirname(so_file)\r
-        self.assertEqual(so_dir, cmd.build_lib)\r
-\r
-        # inplace = 0, cmd.package = 'bar'\r
-        build_py = cmd.get_finalized_command('build_py')\r
-        build_py.package_dir = {'': 'bar'}\r
-        path = cmd.get_ext_fullpath('foo')\r
-        # checking that the last directory is the build_dir\r
-        path = os.path.split(path)[0]\r
-        self.assertEqual(path, cmd.build_lib)\r
-\r
-        # inplace = 1, cmd.package = 'bar'\r
-        cmd.inplace = 1\r
-        other_tmp_dir = os.path.realpath(self.mkdtemp())\r
-        old_wd = os.getcwd()\r
-        os.chdir(other_tmp_dir)\r
-        try:\r
-            path = cmd.get_ext_fullpath('foo')\r
-        finally:\r
-            os.chdir(old_wd)\r
-        # checking that the last directory is bar\r
-        path = os.path.split(path)[0]\r
-        lastdir = os.path.split(path)[-1]\r
-        self.assertEqual(lastdir, 'bar')\r
-\r
-    def test_ext_fullpath(self):\r
-        ext = sysconfig.get_config_vars()['SO']\r
-        dist = Distribution()\r
-        cmd = build_ext(dist)\r
-        cmd.inplace = 1\r
-        cmd.distribution.package_dir = {'': 'src'}\r
-        cmd.distribution.packages = ['lxml', 'lxml.html']\r
-        curdir = os.getcwd()\r
-        wanted = os.path.join(curdir, 'src', 'lxml', 'etree' + ext)\r
-        path = cmd.get_ext_fullpath('lxml.etree')\r
-        self.assertEqual(wanted, path)\r
-\r
-        # building lxml.etree not inplace\r
-        cmd.inplace = 0\r
-        cmd.build_lib = os.path.join(curdir, 'tmpdir')\r
-        wanted = os.path.join(curdir, 'tmpdir', 'lxml', 'etree' + ext)\r
-        path = cmd.get_ext_fullpath('lxml.etree')\r
-        self.assertEqual(wanted, path)\r
-\r
-        # building twisted.runner.portmap not inplace\r
-        build_py = cmd.get_finalized_command('build_py')\r
-        build_py.package_dir = {}\r
-        cmd.distribution.packages = ['twisted', 'twisted.runner.portmap']\r
-        path = cmd.get_ext_fullpath('twisted.runner.portmap')\r
-        wanted = os.path.join(curdir, 'tmpdir', 'twisted', 'runner',\r
-                              'portmap' + ext)\r
-        self.assertEqual(wanted, path)\r
-\r
-        # building twisted.runner.portmap inplace\r
-        cmd.inplace = 1\r
-        path = cmd.get_ext_fullpath('twisted.runner.portmap')\r
-        wanted = os.path.join(curdir, 'twisted', 'runner', 'portmap' + ext)\r
-        self.assertEqual(wanted, path)\r
-\r
-    def test_build_ext_inplace(self):\r
-        etree_c = os.path.join(self.tmp_dir, 'lxml.etree.c')\r
-        etree_ext = Extension('lxml.etree', [etree_c])\r
-        dist = Distribution({'name': 'lxml', 'ext_modules': [etree_ext]})\r
-        cmd = build_ext(dist)\r
-        cmd.ensure_finalized()\r
-        cmd.inplace = 1\r
-        cmd.distribution.package_dir = {'': 'src'}\r
-        cmd.distribution.packages = ['lxml', 'lxml.html']\r
-        curdir = os.getcwd()\r
-        ext = sysconfig.get_config_var("SO")\r
-        wanted = os.path.join(curdir, 'src', 'lxml', 'etree' + ext)\r
-        path = cmd.get_ext_fullpath('lxml.etree')\r
-        self.assertEqual(wanted, path)\r
-\r
-    def test_setuptools_compat(self):\r
-        import distutils.core, distutils.extension, distutils.command.build_ext\r
-        saved_ext = distutils.extension.Extension\r
-        try:\r
-            # on some platforms, it loads the deprecated "dl" module\r
-            test_support.import_module('setuptools_build_ext', deprecated=True)\r
-\r
-            # theses import patch Distutils' Extension class\r
-            from setuptools_build_ext import build_ext as setuptools_build_ext\r
-            from setuptools_extension import Extension\r
-\r
-            etree_c = os.path.join(self.tmp_dir, 'lxml.etree.c')\r
-            etree_ext = Extension('lxml.etree', [etree_c])\r
-            dist = Distribution({'name': 'lxml', 'ext_modules': [etree_ext]})\r
-            cmd = setuptools_build_ext(dist)\r
-            cmd.ensure_finalized()\r
-            cmd.inplace = 1\r
-            cmd.distribution.package_dir = {'': 'src'}\r
-            cmd.distribution.packages = ['lxml', 'lxml.html']\r
-            curdir = os.getcwd()\r
-            ext = sysconfig.get_config_var("SO")\r
-            wanted = os.path.join(curdir, 'src', 'lxml', 'etree' + ext)\r
-            path = cmd.get_ext_fullpath('lxml.etree')\r
-            self.assertEqual(wanted, path)\r
-        finally:\r
-            # restoring Distutils' Extension class otherwise its broken\r
-            distutils.extension.Extension = saved_ext\r
-            distutils.core.Extension = saved_ext\r
-            distutils.command.build_ext.Extension = saved_ext\r
-\r
-    def test_build_ext_path_with_os_sep(self):\r
-        dist = Distribution({'name': 'UpdateManager'})\r
-        cmd = build_ext(dist)\r
-        cmd.ensure_finalized()\r
-        ext = sysconfig.get_config_var("SO")\r
-        ext_name = os.path.join('UpdateManager', 'fdsend')\r
-        ext_path = cmd.get_ext_fullpath(ext_name)\r
-        wanted = os.path.join(cmd.build_lib, 'UpdateManager', 'fdsend' + ext)\r
-        self.assertEqual(ext_path, wanted)\r
-\r
-    def test_build_ext_path_cross_platform(self):\r
-        if sys.platform != 'win32':\r
-            return\r
-        dist = Distribution({'name': 'UpdateManager'})\r
-        cmd = build_ext(dist)\r
-        cmd.ensure_finalized()\r
-        ext = sysconfig.get_config_var("SO")\r
-        # this needs to work even under win32\r
-        ext_name = 'UpdateManager/fdsend'\r
-        ext_path = cmd.get_ext_fullpath(ext_name)\r
-        wanted = os.path.join(cmd.build_lib, 'UpdateManager', 'fdsend' + ext)\r
-        self.assertEqual(ext_path, wanted)\r
-\r
-    @unittest.skipUnless(sys.platform == 'darwin', 'test only relevant for MacOSX')\r
-    def test_deployment_target(self):\r
-        self._try_compile_deployment_target()\r
-\r
-        orig_environ = os.environ\r
-        os.environ = orig_environ.copy()\r
-        self.addCleanup(setattr, os, 'environ', orig_environ)\r
-\r
-        os.environ['MACOSX_DEPLOYMENT_TARGET']='10.1'\r
-        self._try_compile_deployment_target()\r
-\r
-\r
-    def _try_compile_deployment_target(self):\r
-        deptarget_c = os.path.join(self.tmp_dir, 'deptargetmodule.c')\r
-\r
-        with open(deptarget_c, 'w') as fp:\r
-            fp.write(textwrap.dedent('''\\r
-                #include <AvailabilityMacros.h>\r
-\r
-                int dummy;\r
-\r
-                #if TARGET != MAC_OS_X_VERSION_MIN_REQUIRED\r
-                #error "Unexpected target"\r
-               #endif\r
-\r
-            '''))\r
-\r
-        target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')\r
-        target = tuple(map(int, target.split('.')))\r
-        target = '%02d%01d0' % target\r
-\r
-        deptarget_ext = Extension(\r
-            'deptarget',\r
-            [deptarget_c],\r
-            extra_compile_args=['-DTARGET=%s'%(target,)],\r
-        )\r
-        dist = Distribution({\r
-            'name': 'deptarget',\r
-            'ext_modules': [deptarget_ext]\r
-        })\r
-        dist.package_dir = self.tmp_dir\r
-        cmd = build_ext(dist)\r
-        cmd.build_lib = self.tmp_dir\r
-        cmd.build_temp = self.tmp_dir\r
-\r
-        try:\r
-            old_stdout = sys.stdout\r
-            cmd.ensure_finalized()\r
-            cmd.run()\r
-\r
-        except CompileError:\r
-            self.fail("Wrong deployment target during compilation")\r
-\r
-def test_suite():\r
-    return unittest.makeSuite(BuildExtTestCase)\r
-\r
-if __name__ == '__main__':\r
-    test_support.run_unittest(test_suite())\r