summaryrefslogtreecommitdiffstats
path: root/Lib/distutils/tests/test_util.py
diff options
context:
space:
mode:
authorTarek Ziadé <ziade.tarek@gmail.com>2010-07-22 12:50:05 (GMT)
committerTarek Ziadé <ziade.tarek@gmail.com>2010-07-22 12:50:05 (GMT)
commit3679727939a9d25ccfe057e71e8a4b8be73d47ce (patch)
tree88326b8ec80cf57f51d2e093143e233ec4ce1be5 /Lib/distutils/tests/test_util.py
parent5db0c94072abad10c9d2df99eefd1f51eb84f2bc (diff)
downloadcpython-3679727939a9d25ccfe057e71e8a4b8be73d47ce.zip
cpython-3679727939a9d25ccfe057e71e8a4b8be73d47ce.tar.gz
cpython-3679727939a9d25ccfe057e71e8a4b8be73d47ce.tar.bz2
reverted distutils its 3.1 state. All new work is now happening in disutils2, and distutils is now feature-frozen.
Diffstat (limited to 'Lib/distutils/tests/test_util.py')
-rw-r--r--Lib/distutils/tests/test_util.py213
1 files changed, 105 insertions, 108 deletions
diff --git a/Lib/distutils/tests/test_util.py b/Lib/distutils/tests/test_util.py
index 896e1e0..0c732f8 100644
--- a/Lib/distutils/tests/test_util.py
+++ b/Lib/distutils/tests/test_util.py
@@ -3,33 +3,15 @@ import os
import sys
import unittest
from copy import copy
-from io import BytesIO
-import subprocess
-from sysconfig import get_config_vars, get_platform
from distutils.errors import DistutilsPlatformError, DistutilsByteCompileError
-from distutils.util import (convert_path, change_root,
+from distutils.util import (get_platform, convert_path, change_root,
check_environ, split_quoted, strtobool,
- rfc822_escape, get_compiler_versions,
- _find_exe_version, _MAC_OS_X_LD_VERSION,
- byte_compile)
-from distutils import util
+ rfc822_escape, byte_compile)
+from distutils import util # used to patch _environ_checked
+from distutils.sysconfig import get_config_vars
+from distutils import sysconfig
from distutils.tests import support
-from distutils.version import LooseVersion
-
-class FakePopen(object):
- test_class = None
- def __init__(self, cmd, shell, stdout, stderr):
- self.cmd = cmd.split()[0]
- exes = self.test_class._exes
- if self.cmd not in exes:
- # we don't want to call the system, returning an empty
- # output so it doesn't match
- self.stdout = BytesIO()
- self.stderr = BytesIO()
- else:
- self.stdout = BytesIO(exes[self.cmd])
- self.stderr = BytesIO()
class UtilTestCase(support.EnvironGuard, unittest.TestCase):
@@ -43,7 +25,7 @@ class UtilTestCase(support.EnvironGuard, unittest.TestCase):
self.join = os.path.join
self.isabs = os.path.isabs
self.splitdrive = os.path.splitdrive
- #self._config_vars = copy(sysconfig._config_vars)
+ self._config_vars = copy(sysconfig._config_vars)
# patching os.uname
if hasattr(os, 'uname'):
@@ -52,17 +34,8 @@ class UtilTestCase(support.EnvironGuard, unittest.TestCase):
else:
self.uname = None
self._uname = None
- os.uname = self._get_uname
- # patching POpen
- self.old_find_executable = util.find_executable
- util.find_executable = self._find_executable
- self._exes = {}
- self.old_popen = subprocess.Popen
- self.old_stdout = sys.stdout
- self.old_stderr = sys.stderr
- FakePopen.test_class = self
- subprocess.Popen = FakePopen
+ os.uname = self._get_uname
def tearDown(self):
# getting back the environment
@@ -77,11 +50,7 @@ class UtilTestCase(support.EnvironGuard, unittest.TestCase):
os.uname = self.uname
else:
del os.uname
- #sysconfig._config_vars = copy(self._config_vars)
- util.find_executable = self.old_find_executable
- subprocess.Popen = self.old_popen
- sys.old_stdout = self.old_stdout
- sys.old_stderr = self.old_stderr
+ sysconfig._config_vars = copy(self._config_vars)
super(UtilTestCase, self).tearDown()
def _set_uname(self, uname):
@@ -91,11 +60,103 @@ class UtilTestCase(support.EnvironGuard, unittest.TestCase):
return self._uname
def test_get_platform(self):
- platform = util.get_platform()
- self.assertEquals(platform, get_platform())
- util.set_platform('MyOwnPlatform')
- self.assertEquals('MyOwnPlatform', util.get_platform())
- util.set_platform(platform)
+
+ # windows XP, 32bits
+ os.name = 'nt'
+ sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) '
+ '[MSC v.1310 32 bit (Intel)]')
+ sys.platform = 'win32'
+ self.assertEquals(get_platform(), 'win32')
+
+ # windows XP, amd64
+ os.name = 'nt'
+ sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) '
+ '[MSC v.1310 32 bit (Amd64)]')
+ sys.platform = 'win32'
+ self.assertEquals(get_platform(), 'win-amd64')
+
+ # windows XP, itanium
+ os.name = 'nt'
+ sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) '
+ '[MSC v.1310 32 bit (Itanium)]')
+ sys.platform = 'win32'
+ self.assertEquals(get_platform(), 'win-ia64')
+
+ # macbook
+ os.name = 'posix'
+ sys.version = ('2.5 (r25:51918, Sep 19 2006, 08:49:13) '
+ '\n[GCC 4.0.1 (Apple Computer, Inc. build 5341)]')
+ sys.platform = 'darwin'
+ self._set_uname(('Darwin', 'macziade', '8.11.1',
+ ('Darwin Kernel Version 8.11.1: '
+ 'Wed Oct 10 18:23:28 PDT 2007; '
+ 'root:xnu-792.25.20~1/RELEASE_I386'), 'i386'))
+ os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3'
+
+ get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g '
+ '-fwrapv -O3 -Wall -Wstrict-prototypes')
+
+ cursize = sys.maxsize
+ sys.maxsize = (2 ** 31)-1
+ try:
+ self.assertEquals(get_platform(), 'macosx-10.3-i386')
+ finally:
+ sys.maxsize = cursize
+
+ # macbook with fat binaries (fat, universal or fat64)
+ os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.4'
+ get_config_vars()['CFLAGS'] = ('-arch ppc -arch i386 -isysroot '
+ '/Developer/SDKs/MacOSX10.4u.sdk '
+ '-fno-strict-aliasing -fno-common '
+ '-dynamic -DNDEBUG -g -O3')
+
+ self.assertEquals(get_platform(), 'macosx-10.4-fat')
+
+ get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch i386 -isysroot '
+ '/Developer/SDKs/MacOSX10.4u.sdk '
+ '-fno-strict-aliasing -fno-common '
+ '-dynamic -DNDEBUG -g -O3')
+
+ self.assertEquals(get_platform(), 'macosx-10.4-intel')
+
+ get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc -arch i386 -isysroot '
+ '/Developer/SDKs/MacOSX10.4u.sdk '
+ '-fno-strict-aliasing -fno-common '
+ '-dynamic -DNDEBUG -g -O3')
+ self.assertEquals(get_platform(), 'macosx-10.4-fat3')
+
+ get_config_vars()['CFLAGS'] = ('-arch ppc64 -arch x86_64 -arch ppc -arch i386 -isysroot '
+ '/Developer/SDKs/MacOSX10.4u.sdk '
+ '-fno-strict-aliasing -fno-common '
+ '-dynamic -DNDEBUG -g -O3')
+ self.assertEquals(get_platform(), 'macosx-10.4-universal')
+
+ get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc64 -isysroot '
+ '/Developer/SDKs/MacOSX10.4u.sdk '
+ '-fno-strict-aliasing -fno-common '
+ '-dynamic -DNDEBUG -g -O3')
+
+ self.assertEquals(get_platform(), 'macosx-10.4-fat64')
+
+ for arch in ('ppc', 'i386', 'x86_64', 'ppc64'):
+ get_config_vars()['CFLAGS'] = ('-arch %s -isysroot '
+ '/Developer/SDKs/MacOSX10.4u.sdk '
+ '-fno-strict-aliasing -fno-common '
+ '-dynamic -DNDEBUG -g -O3'%(arch,))
+
+ self.assertEquals(get_platform(), 'macosx-10.4-%s'%(arch,))
+
+ # linux debian sarge
+ os.name = 'posix'
+ sys.version = ('2.3.5 (#1, Jul 4 2007, 17:28:59) '
+ '\n[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)]')
+ sys.platform = 'linux2'
+ self._set_uname(('Linux', 'aglae', '2.6.21.1dedibox-r7',
+ '#1 Mon Apr 30 17:25:38 CEST 2007', 'i686'))
+
+ self.assertEquals(get_platform(), 'linux-i686')
+
+ # XXX more platforms to tests here
def test_convert_path(self):
# linux/mac
@@ -199,70 +260,6 @@ class UtilTestCase(support.EnvironGuard, unittest.TestCase):
'header%(8s)s') % {'8s': '\n'+8*' '}
self.assertEquals(res, wanted)
- def test_find_exe_version(self):
- # the ld version scheme under MAC OS is:
- # ^@(#)PROGRAM:ld PROJECT:ld64-VERSION
- #
- # where VERSION is a 2-digit number for major
- # revisions. For instance under Leopard, it's
- # currently 77
- #
- # Dots are used when branching is done.
- #
- # The SnowLeopard ld64 is currently 95.2.12
-
- for output, version in ((b'@(#)PROGRAM:ld PROJECT:ld64-77', '77'),
- (b'@(#)PROGRAM:ld PROJECT:ld64-95.2.12',
- '95.2.12')):
- result = _MAC_OS_X_LD_VERSION.search(output)
- self.assertEquals(result.group(1).decode(), version)
-
- def _find_executable(self, name):
- if name in self._exes:
- return name
- return None
-
- def test_get_compiler_versions(self):
- # get_versions calls distutils.spawn.find_executable on
- # 'gcc', 'ld' and 'dllwrap'
- self.assertEquals(get_compiler_versions(), (None, None, None))
-
- # Let's fake we have 'gcc' and it returns '3.4.5'
- self._exes['gcc'] = b'gcc (GCC) 3.4.5 (mingw special)\nFSF'
- res = get_compiler_versions()
- self.assertEquals(str(res[0]), '3.4.5')
-
- # and let's see what happens when the version
- # doesn't match the regular expression
- # (\d+\.\d+(\.\d+)*)
- self._exes['gcc'] = b'very strange output'
- res = get_compiler_versions()
- self.assertEquals(res[0], None)
-
- # same thing for ld
- if sys.platform != 'darwin':
- self._exes['ld'] = b'GNU ld version 2.17.50 20060824'
- res = get_compiler_versions()
- self.assertEquals(str(res[1]), '2.17.50')
- self._exes['ld'] = b'@(#)PROGRAM:ld PROJECT:ld64-77'
- res = get_compiler_versions()
- self.assertEquals(res[1], None)
- else:
- self._exes['ld'] = b'GNU ld version 2.17.50 20060824'
- res = get_compiler_versions()
- self.assertEquals(res[1], None)
- self._exes['ld'] = b'@(#)PROGRAM:ld PROJECT:ld64-77'
- res = get_compiler_versions()
- self.assertEquals(str(res[1]), '77')
-
- # and dllwrap
- self._exes['dllwrap'] = b'GNU dllwrap 2.17.50 20060824\nFSF'
- res = get_compiler_versions()
- self.assertEquals(str(res[2]), '2.17.50')
- self._exes['dllwrap'] = b'Cheese Wrap'
- res = get_compiler_versions()
- self.assertEquals(res[2], None)
-
def test_dont_write_bytecode(self):
# makes sure byte_compile raise a DistutilsError
# if sys.dont_write_bytecode is True