3 Tests assume the initial paths in sys.path once the interpreter has begun
4 executing have not been removed.
12 from copy
import copy
, deepcopy
14 from test
.test_support
import run_unittest
, TESTFN
, unlink
, get_attribute
17 from sysconfig
import (get_paths
, get_platform
, get_config_vars
,
18 get_path
, get_path_names
, _INSTALL_SCHEMES
,
19 _get_default_scheme
, _expand_vars
,
20 get_scheme_names
, get_config_var
)
22 class TestSysConfig(unittest
.TestCase
):
25 """Make a copy of sys.path"""
26 super(TestSysConfig
, self
).setUp()
27 self
.sys_path
= sys
.path
[:]
30 if hasattr(os
, 'uname'):
32 self
._uname
= os
.uname()
36 os
.uname
= self
._get
_uname
37 # saving the environment
39 self
.platform
= sys
.platform
40 self
.version
= sys
.version
42 self
.join
= os
.path
.join
43 self
.isabs
= os
.path
.isabs
44 self
.splitdrive
= os
.path
.splitdrive
45 self
._config
_vars
= copy(sysconfig
._CONFIG
_VARS
)
46 self
.old_environ
= deepcopy(os
.environ
)
49 """Restore sys.path"""
50 sys
.path
[:] = self
.sys_path
51 if self
.makefile
is not None:
52 os
.unlink(self
.makefile
)
53 self
._cleanup
_testfn
()
54 if self
.uname
is not None:
59 sys
.platform
= self
.platform
60 sys
.version
= self
.version
62 os
.path
.join
= self
.join
63 os
.path
.isabs
= self
.isabs
64 os
.path
.splitdrive
= self
.splitdrive
65 sysconfig
._CONFIG
_VARS
= copy(self
._config
_vars
)
66 for key
, value
in self
.old_environ
.items():
67 if os
.environ
.get(key
) != value
:
68 os
.environ
[key
] = value
70 for key
in os
.environ
.keys():
71 if key
not in self
.old_environ
:
74 super(TestSysConfig
, self
).tearDown()
76 def _set_uname(self
, uname
):
82 def _cleanup_testfn(self
):
84 if os
.path
.isfile(path
):
86 elif os
.path
.isdir(path
):
89 def test_get_path_names(self
):
90 self
.assertEquals(get_path_names(), sysconfig
._SCHEME
_KEYS
)
92 def test_get_paths(self
):
94 default_scheme
= _get_default_scheme()
95 wanted
= _expand_vars(default_scheme
, None)
96 wanted
= wanted
.items()
98 scheme
= scheme
.items()
100 self
.assertEquals(scheme
, wanted
)
102 def test_get_path(self
):
103 # xxx make real tests here
104 for scheme
in _INSTALL_SCHEMES
:
105 for name
in _INSTALL_SCHEMES
[scheme
]:
106 res
= get_path(name
, scheme
)
108 def test_get_config_vars(self
):
109 cvars
= get_config_vars()
110 self
.assertIsInstance(cvars
, dict)
111 self
.assertTrue(cvars
)
113 def test_get_platform(self
):
116 sys
.version
= ('2.4.4 (#71, Oct 18 2006, 08:34:43) '
117 '[MSC v.1310 32 bit (Intel)]')
118 sys
.platform
= 'win32'
119 self
.assertEquals(get_platform(), 'win32')
123 sys
.version
= ('2.4.4 (#71, Oct 18 2006, 08:34:43) '
124 '[MSC v.1310 32 bit (Amd64)]')
125 sys
.platform
= 'win32'
126 self
.assertEquals(get_platform(), 'win-amd64')
128 # windows XP, itanium
130 sys
.version
= ('2.4.4 (#71, Oct 18 2006, 08:34:43) '
131 '[MSC v.1310 32 bit (Itanium)]')
132 sys
.platform
= 'win32'
133 self
.assertEquals(get_platform(), 'win-ia64')
137 sys
.version
= ('2.5 (r25:51918, Sep 19 2006, 08:49:13) '
138 '\n[GCC 4.0.1 (Apple Computer, Inc. build 5341)]')
139 sys
.platform
= 'darwin'
140 self
._set
_uname
(('Darwin', 'macziade', '8.11.1',
141 ('Darwin Kernel Version 8.11.1: '
142 'Wed Oct 10 18:23:28 PDT 2007; '
143 'root:xnu-792.25.20~1/RELEASE_I386'), 'PowerPC'))
144 os
.environ
['MACOSX_DEPLOYMENT_TARGET'] = '10.3'
146 get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g '
147 '-fwrapv -O3 -Wall -Wstrict-prototypes')
151 sys
.maxint
= 2147483647
152 self
.assertEquals(get_platform(), 'macosx-10.3-ppc')
153 sys
.maxint
= 9223372036854775807
154 self
.assertEquals(get_platform(), 'macosx-10.3-ppc64')
159 self
._set
_uname
(('Darwin', 'macziade', '8.11.1',
160 ('Darwin Kernel Version 8.11.1: '
161 'Wed Oct 10 18:23:28 PDT 2007; '
162 'root:xnu-792.25.20~1/RELEASE_I386'), 'i386'))
163 get_config_vars()['MACOSX_DEPLOYMENT_TARGET'] = '10.3'
164 os
.environ
['MACOSX_DEPLOYMENT_TARGET'] = '10.3'
166 get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g '
167 '-fwrapv -O3 -Wall -Wstrict-prototypes')
171 sys
.maxint
= 2147483647
172 self
.assertEquals(get_platform(), 'macosx-10.3-i386')
173 sys
.maxint
= 9223372036854775807
174 self
.assertEquals(get_platform(), 'macosx-10.3-x86_64')
178 # macbook with fat binaries (fat, universal or fat64)
179 os
.environ
['MACOSX_DEPLOYMENT_TARGET'] = '10.4'
180 get_config_vars()['CFLAGS'] = ('-arch ppc -arch i386 -isysroot '
181 '/Developer/SDKs/MacOSX10.4u.sdk '
182 '-fno-strict-aliasing -fno-common '
183 '-dynamic -DNDEBUG -g -O3')
185 self
.assertEquals(get_platform(), 'macosx-10.4-fat')
187 get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch i386 -isysroot '
188 '/Developer/SDKs/MacOSX10.4u.sdk '
189 '-fno-strict-aliasing -fno-common '
190 '-dynamic -DNDEBUG -g -O3')
192 self
.assertEquals(get_platform(), 'macosx-10.4-intel')
194 get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc -arch i386 -isysroot '
195 '/Developer/SDKs/MacOSX10.4u.sdk '
196 '-fno-strict-aliasing -fno-common '
197 '-dynamic -DNDEBUG -g -O3')
198 self
.assertEquals(get_platform(), 'macosx-10.4-fat3')
200 get_config_vars()['CFLAGS'] = ('-arch ppc64 -arch x86_64 -arch ppc -arch i386 -isysroot '
201 '/Developer/SDKs/MacOSX10.4u.sdk '
202 '-fno-strict-aliasing -fno-common '
203 '-dynamic -DNDEBUG -g -O3')
204 self
.assertEquals(get_platform(), 'macosx-10.4-universal')
206 get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc64 -isysroot '
207 '/Developer/SDKs/MacOSX10.4u.sdk '
208 '-fno-strict-aliasing -fno-common '
209 '-dynamic -DNDEBUG -g -O3')
211 self
.assertEquals(get_platform(), 'macosx-10.4-fat64')
213 for arch
in ('ppc', 'i386', 'x86_64', 'ppc64'):
214 get_config_vars()['CFLAGS'] = ('-arch %s -isysroot '
215 '/Developer/SDKs/MacOSX10.4u.sdk '
216 '-fno-strict-aliasing -fno-common '
217 '-dynamic -DNDEBUG -g -O3'%(arch
,))
219 self
.assertEquals(get_platform(), 'macosx-10.4-%s'%(arch
,))
223 sys
.version
= ('2.3.5 (#1, Jul 4 2007, 17:28:59) '
224 '\n[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)]')
225 sys
.platform
= 'linux2'
226 self
._set
_uname
(('Linux', 'aglae', '2.6.21.1dedibox-r7',
227 '#1 Mon Apr 30 17:25:38 CEST 2007', 'i686'))
229 self
.assertEquals(get_platform(), 'linux-i686')
231 # XXX more platforms to tests here
233 def test_get_config_h_filename(self
):
234 config_h
= sysconfig
.get_config_h_filename()
235 self
.assertTrue(os
.path
.isfile(config_h
), config_h
)
237 def test_get_scheme_names(self
):
238 wanted
= ('nt', 'nt_user', 'os2', 'os2_home', 'osx_framework_user',
239 'posix_home', 'posix_prefix', 'posix_user')
240 self
.assertEquals(get_scheme_names(), wanted
)
242 def test_symlink(self
):
244 symlink
= get_attribute(os
, "symlink")
247 'import sysconfig; print sysconfig.get_platform()']
248 p
= subprocess
.Popen(cmd
, stdout
=subprocess
.PIPE
)
249 return p
.communicate()
250 real
= os
.path
.realpath(sys
.executable
)
251 link
= os
.path
.abspath(TESTFN
)
254 self
.assertEqual(get(real
), get(link
))
258 def test_user_similar(self
):
259 # Issue 8759 : make sure the posix scheme for the users
260 # is similar to the global posix_prefix one
261 base
= get_config_var('base')
262 user
= get_config_var('userbase')
263 for name
in ('stdlib', 'platstdlib', 'purelib', 'platlib'):
264 global_path
= get_path(name
, 'posix_prefix')
265 user_path
= get_path(name
, 'posix_user')
266 self
.assertEquals(user_path
, global_path
.replace(base
, user
))
269 run_unittest(TestSysConfig
)
271 if __name__
== "__main__":