annotate Lib/test/test_platform.py @ 80661:94de77bd0b4b 2.7

Issue #16194: document imp.load_dynamic problems when read several extension modules from the same binary object file.
author Andrew Svetlov <andrew.svetlov@gmail.com>
date Thu, 29 Nov 2012 19:51:28 +0200
parents 0a53a978a160
children 04a163f93ad4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47079
3407bf9dac38 make test_platform a bit more assertive (We'll see what the buildbots say.)
Benjamin Peterson <benjamin@python.org>
parents: 37472
diff changeset
1 import sys
47168
95cb009366dc fix test_platform (os was not imported)
Benjamin Peterson <benjamin@python.org>
parents: 47165
diff changeset
2 import os
35900
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
3 import unittest
47079
3407bf9dac38 make test_platform a bit more assertive (We'll see what the buildbots say.)
Benjamin Peterson <benjamin@python.org>
parents: 37472
diff changeset
4 import platform
49482
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
5 import subprocess
47079
3407bf9dac38 make test_platform a bit more assertive (We'll see what the buildbots say.)
Benjamin Peterson <benjamin@python.org>
parents: 37472
diff changeset
6
35900
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
7 from test import test_support
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
8
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
9 class PlatformTest(unittest.TestCase):
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
10 def test_architecture(self):
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
11 res = platform.architecture()
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
12
49482
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
13 if hasattr(os, "symlink"):
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
14 def test_architecture_via_symlink(self): # issue3762
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
15 def get(python):
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
16 cmd = [python, '-c',
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
17 'import platform; print platform.architecture()']
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
18 p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
19 return p.communicate()
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
20 real = os.path.realpath(sys.executable)
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
21 link = os.path.abspath(test_support.TESTFN)
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
22 os.symlink(real, link)
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
23 try:
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
24 self.assertEqual(get(real), get(link))
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
25 finally:
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
26 os.remove(link)
a0258baed005 Merged revisions 66809-66810,66835,66862-66863 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 47571
diff changeset
27
35900
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
28 def test_platform(self):
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
29 for aliased in (False, True):
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
30 for terse in (False, True):
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
31 res = platform.platform(aliased, terse)
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
32
52332
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
33 def test_system(self):
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
34 res = platform.system()
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
35
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
36 def test_node(self):
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
37 res = platform.node()
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
38
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
39 def test_release(self):
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
40 res = platform.release()
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
41
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
42 def test_version(self):
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
43 res = platform.version()
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
44
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
45 def test_machine(self):
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
46 res = platform.machine()
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
47
35900
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
48 def test_processor(self):
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
49 res = platform.processor()
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
50
52346
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
51 def setUp(self):
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
52 self.save_version = sys.version
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
53 self.save_subversion = sys.subversion
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
54 self.save_platform = sys.platform
52330
7d0e3a8c2e9e Remove the sys.version_info shortcut, since they cause the APIs
Marc-André Lemburg <mal@egenix.com>
parents: 49565
diff changeset
55
52346
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
56 def tearDown(self):
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
57 sys.version = self.save_version
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
58 sys.subversion = self.save_subversion
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
59 sys.platform = self.save_platform
52332
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
60
52348
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
61 def test_sys_version(self):
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
62 # Old test.
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
63 for input, output in (
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
64 ('2.4.3 (#1, Jun 21 2006, 13:54:21) \n[GCC 3.3.4 (pre 3.3.5 20040809)]',
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
65 ('CPython', '2.4.3', '', '', '1', 'Jun 21 2006 13:54:21', 'GCC 3.3.4 (pre 3.3.5 20040809)')),
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
66 ('IronPython 1.0.60816 on .NET 2.0.50727.42',
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
67 ('IronPython', '1.0.60816', '', '', '', '', '.NET 2.0.50727.42')),
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
68 ('IronPython 1.0 (1.0.61005.1977) on .NET 2.0.50727.42',
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
69 ('IronPython', '1.0.0', '', '', '', '', '.NET 2.0.50727.42')),
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
70 ):
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
71 # branch and revision are not "parsed", but fetched
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
72 # from sys.subversion. Ignore them
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
73 (name, version, branch, revision, buildno, builddate, compiler) \
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
74 = platform._sys_version(input)
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
75 self.assertEqual(
0a052a2873b2 roll old test in with new one
Benjamin Peterson <benjamin@python.org>
parents: 52347
diff changeset
76 (name, version, '', '', buildno, builddate, compiler), output)
52332
8cd617c3e74b Merged revisions 70594-70595 via svnmerge from
Marc-André Lemburg <mal@egenix.com>
parents: 49482
diff changeset
77
52346
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
78 # Tests for python_implementation(), python_version(), python_branch(),
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
79 # python_revision(), python_build(), and python_compiler().
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
80 sys_versions = {
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
81 ("2.6.1 (r261:67515, Dec 6 2008, 15:26:00) \n[GCC 4.0.1 (Apple Computer, Inc. build 5370)]",
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
82 ('CPython', 'tags/r261', '67515'), self.save_platform)
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
83 :
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
84 ("CPython", "2.6.1", "tags/r261", "67515",
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
85 ('r261:67515', 'Dec 6 2008 15:26:00'),
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
86 'GCC 4.0.1 (Apple Computer, Inc. build 5370)'),
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
87 ("IronPython 2.0 (2.0.0.0) on .NET 2.0.50727.3053", None, "cli")
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
88 :
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
89 ("IronPython", "2.0.0", "", "", ("", ""),
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
90 ".NET 2.0.50727.3053"),
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
91 ("2.5 (trunk:6107, Mar 26 2009, 13:02:18) \n[Java HotSpot(TM) Client VM (\"Apple Computer, Inc.\")]",
52347
78fedc342a6b more and more implementations now support sys.subversion
Benjamin Peterson <benjamin@python.org>
parents: 52346
diff changeset
92 ('Jython', 'trunk', '6107'), "java1.5.0_16")
52346
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
93 :
52347
78fedc342a6b more and more implementations now support sys.subversion
Benjamin Peterson <benjamin@python.org>
parents: 52346
diff changeset
94 ("Jython", "2.5.0", "trunk", "6107",
78fedc342a6b more and more implementations now support sys.subversion
Benjamin Peterson <benjamin@python.org>
parents: 52346
diff changeset
95 ('trunk:6107', 'Mar 26 2009'), "java1.5.0_16"),
52349
007e9c86fb55 add support for PyPy
Benjamin Peterson <benjamin@python.org>
parents: 52348
diff changeset
96 ("2.5.2 (63378, Mar 26 2009, 18:03:29)\n[PyPy 1.0.0]",
007e9c86fb55 add support for PyPy
Benjamin Peterson <benjamin@python.org>
parents: 52348
diff changeset
97 ('PyPy', 'trunk', '63378'), self.save_platform)
007e9c86fb55 add support for PyPy
Benjamin Peterson <benjamin@python.org>
parents: 52348
diff changeset
98 :
007e9c86fb55 add support for PyPy
Benjamin Peterson <benjamin@python.org>
parents: 52348
diff changeset
99 ("PyPy", "2.5.2", "trunk", "63378", ('63378', 'Mar 26 2009'),
007e9c86fb55 add support for PyPy
Benjamin Peterson <benjamin@python.org>
parents: 52348
diff changeset
100 "")
52346
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
101 }
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
102 for (version_tag, subversion, sys_platform), info in \
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
103 sys_versions.iteritems():
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
104 sys.version = version_tag
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
105 if subversion is None:
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
106 if hasattr(sys, "subversion"):
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
107 del sys.subversion
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
108 else:
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
109 sys.subversion = subversion
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
110 if sys_platform is not None:
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
111 sys.platform = sys_platform
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
112 self.assertEqual(platform.python_implementation(), info[0])
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
113 self.assertEqual(platform.python_version(), info[1])
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
114 self.assertEqual(platform.python_branch(), info[2])
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
115 self.assertEqual(platform.python_revision(), info[3])
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
116 self.assertEqual(platform.python_build(), info[4])
1e2335962bad add much better tests for python version information parsing
Benjamin Peterson <benjamin@python.org>
parents: 52330
diff changeset
117 self.assertEqual(platform.python_compiler(), info[5])
35900
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
118
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
119 def test_system_alias(self):
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
120 res = platform.system_alias(
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
121 platform.system(),
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
122 platform.release(),
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
123 platform.version(),
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
124 )
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
125
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
126 def test_uname(self):
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
127 res = platform.uname()
55002
6768b2350c57 convert usage of fail* to assert*
Benjamin Peterson <benjamin@python.org>
parents: 52349
diff changeset
128 self.assertTrue(any(res))
35900
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
129
59911
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
130 @unittest.skipUnless(sys.platform.startswith('win'), "windows only test")
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
131 def test_uname_win32_ARCHITEW6432(self):
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
132 # Issue 7860: make sure we get architecture from the correct variable
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
133 # on 64 bit Windows: if PROCESSOR_ARCHITEW6432 exists we should be
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
134 # using it, per
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
135 # http://blogs.msdn.com/david.wang/archive/2006/03/26/HOWTO-Detect-Process-Bitness.aspx
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
136 try:
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
137 with test_support.EnvironmentVarGuard() as environ:
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
138 if 'PROCESSOR_ARCHITEW6432' in environ:
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
139 del environ['PROCESSOR_ARCHITEW6432']
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
140 environ['PROCESSOR_ARCHITECTURE'] = 'foo'
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
141 platform._uname_cache = None
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
142 system, node, release, version, machine, processor = platform.uname()
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
143 self.assertEqual(machine, 'foo')
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
144 environ['PROCESSOR_ARCHITEW6432'] = 'bar'
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
145 platform._uname_cache = None
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
146 system, node, release, version, machine, processor = platform.uname()
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
147 self.assertEqual(machine, 'bar')
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
148 finally:
6df799a2c24e Issue #7860: platform.uname now reports the correct 'machine' type
R. David Murray <rdmurray@bitdance.com>
parents: 58774
diff changeset
149 platform._uname_cache = None
35900
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
150
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
151 def test_java_ver(self):
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
152 res = platform.java_ver()
47079
3407bf9dac38 make test_platform a bit more assertive (We'll see what the buildbots say.)
Benjamin Peterson <benjamin@python.org>
parents: 37472
diff changeset
153 if sys.platform == 'java':
55002
6768b2350c57 convert usage of fail* to assert*
Benjamin Peterson <benjamin@python.org>
parents: 52349
diff changeset
154 self.assertTrue(all(res))
35900
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
155
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
156 def test_win32_ver(self):
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
157 res = platform.win32_ver()
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
158
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
159 def test_mac_ver(self):
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
160 res = platform.mac_ver()
47165
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
161
47208
5be2d82ac5ac check for toolbox glue before testing platform.mac_ver intensly
Benjamin Peterson <benjamin@python.org>
parents: 47168
diff changeset
162 try:
5be2d82ac5ac check for toolbox glue before testing platform.mac_ver intensly
Benjamin Peterson <benjamin@python.org>
parents: 47168
diff changeset
163 import gestalt
5be2d82ac5ac check for toolbox glue before testing platform.mac_ver intensly
Benjamin Peterson <benjamin@python.org>
parents: 47168
diff changeset
164 except ImportError:
5be2d82ac5ac check for toolbox glue before testing platform.mac_ver intensly
Benjamin Peterson <benjamin@python.org>
parents: 47168
diff changeset
165 have_toolbox_glue = False
5be2d82ac5ac check for toolbox glue before testing platform.mac_ver intensly
Benjamin Peterson <benjamin@python.org>
parents: 47168
diff changeset
166 else:
5be2d82ac5ac check for toolbox glue before testing platform.mac_ver intensly
Benjamin Peterson <benjamin@python.org>
parents: 47168
diff changeset
167 have_toolbox_glue = True
5be2d82ac5ac check for toolbox glue before testing platform.mac_ver intensly
Benjamin Peterson <benjamin@python.org>
parents: 47168
diff changeset
168
47571
271845f323be backport of 64096
Benjamin Peterson <benjamin@python.org>
parents: 47208
diff changeset
169 if have_toolbox_glue and platform.uname()[0] == 'Darwin':
47165
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
170 # We're on a MacOSX system, check that
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
171 # the right version information is returned
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
172 fd = os.popen('sw_vers', 'r')
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
173 real_ver = None
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
174 for ln in fd:
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
175 if ln.startswith('ProductVersion:'):
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
176 real_ver = ln.strip().split()[-1]
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
177 break
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
178 fd.close()
55002
6768b2350c57 convert usage of fail* to assert*
Benjamin Peterson <benjamin@python.org>
parents: 52349
diff changeset
179 self.assertFalse(real_ver is None)
55812
ce7e0038996f test_platform fails on OS X Snow Leopard because the UNIX command to get the
Brett Cannon <bcannon@gmail.com>
parents: 55002
diff changeset
180 result_list = res[0].split('.')
ce7e0038996f test_platform fails on OS X Snow Leopard because the UNIX command to get the
Brett Cannon <bcannon@gmail.com>
parents: 55002
diff changeset
181 expect_list = real_ver.split('.')
ce7e0038996f test_platform fails on OS X Snow Leopard because the UNIX command to get the
Brett Cannon <bcannon@gmail.com>
parents: 55002
diff changeset
182 len_diff = len(result_list) - len(expect_list)
ce7e0038996f test_platform fails on OS X Snow Leopard because the UNIX command to get the
Brett Cannon <bcannon@gmail.com>
parents: 55002
diff changeset
183 # On Snow Leopard, sw_vers reports 10.6.0 as 10.6
ce7e0038996f test_platform fails on OS X Snow Leopard because the UNIX command to get the
Brett Cannon <bcannon@gmail.com>
parents: 55002
diff changeset
184 if len_diff > 0:
ce7e0038996f test_platform fails on OS X Snow Leopard because the UNIX command to get the
Brett Cannon <bcannon@gmail.com>
parents: 55002
diff changeset
185 expect_list.extend(['0'] * len_diff)
66348
614c84670c63 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 63158
diff changeset
186 self.assertEqual(result_list, expect_list)
47165
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
187
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
188 # res[1] claims to contain
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
189 # (version, dev_stage, non_release_version)
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
190 # That information is no longer available
66348
614c84670c63 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 63158
diff changeset
191 self.assertEqual(res[1], ('', '', ''))
47165
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
192
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
193 if sys.byteorder == 'little':
71316
0a53a978a160 Issue #12549: Correct test_platform to not fail when OS X returns 'x86_64'
Ned Deily <nad@acm.org>
parents: 68256
diff changeset
194 self.assertIn(res[2], ('i386', 'x86_64'))
47165
cd91daf0327c - Add unittests for platform.mac_ver (or rather, ensure that the unittest for
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47079
diff changeset
195 else:
66348
614c84670c63 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 63158
diff changeset
196 self.assertEqual(res[2], 'PowerPC')
35900
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
197
63159
e267ee9760bd Merged revisions 83085 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 58795
diff changeset
198
63158
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
199 @unittest.skipUnless(sys.platform == 'darwin', "OSX only test")
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
200 def test_mac_ver_with_fork(self):
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
201 # Issue7895: platform.mac_ver() crashes when using fork without exec
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
202 #
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
203 # This test checks that the fix for that issue works.
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
204 #
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
205 pid = os.fork()
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
206 if pid == 0:
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
207 # child
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
208 info = platform.mac_ver()
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
209 os._exit(0)
63159
e267ee9760bd Merged revisions 83085 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 58795
diff changeset
210
63158
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
211 else:
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
212 # parent
1ce84c61f3b1 Merged revisions 83075 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59911
diff changeset
213 cpid, sts = os.waitpid(pid, 0)
66348
614c84670c63 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 63158
diff changeset
214 self.assertEqual(cpid, pid)
614c84670c63 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 63158
diff changeset
215 self.assertEqual(sts, 0)
63159
e267ee9760bd Merged revisions 83085 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 58795
diff changeset
216
35900
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
217 def test_dist(self):
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
218 res = platform.dist()
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
219
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
220 def test_libc_ver(self):
37472
f8fc30c0fc7c Fix test_platform on cygwin. When running from build area, sys.executable
Anthony Baxter <anthonybaxter@gmail.com>
parents: 35900
diff changeset
221 import os
47079
3407bf9dac38 make test_platform a bit more assertive (We'll see what the buildbots say.)
Benjamin Peterson <benjamin@python.org>
parents: 37472
diff changeset
222 if os.path.isdir(sys.executable) and \
3407bf9dac38 make test_platform a bit more assertive (We'll see what the buildbots say.)
Benjamin Peterson <benjamin@python.org>
parents: 37472
diff changeset
223 os.path.exists(sys.executable+'.exe'):
37472
f8fc30c0fc7c Fix test_platform on cygwin. When running from build area, sys.executable
Anthony Baxter <anthonybaxter@gmail.com>
parents: 35900
diff changeset
224 # Cygwin horror
58795
ca67c37cd26d Merged revisions 78035,78040,78043,78049-78050,78052-78054 via svnmerge from
Georg Brandl <georg@python.org>
parents: 58481
diff changeset
225 executable = sys.executable + '.exe'
ca67c37cd26d Merged revisions 78035,78040,78043,78049-78050,78052-78054 via svnmerge from
Georg Brandl <georg@python.org>
parents: 58481
diff changeset
226 else:
ca67c37cd26d Merged revisions 78035,78040,78043,78049-78050,78052-78054 via svnmerge from
Georg Brandl <georg@python.org>
parents: 58481
diff changeset
227 executable = sys.executable
ca67c37cd26d Merged revisions 78035,78040,78043,78049-78050,78052-78054 via svnmerge from
Georg Brandl <georg@python.org>
parents: 58481
diff changeset
228 res = platform.libc_ver(executable)
35900
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
229
58481
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
230 def test_parse_release_file(self):
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
231
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
232 for input, output in (
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
233 # Examples of release file contents:
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
234 ('SuSE Linux 9.3 (x86-64)', ('SuSE Linux ', '9.3', 'x86-64')),
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
235 ('SUSE LINUX 10.1 (X86-64)', ('SUSE LINUX ', '10.1', 'X86-64')),
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
236 ('SUSE LINUX 10.1 (i586)', ('SUSE LINUX ', '10.1', 'i586')),
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
237 ('Fedora Core release 5 (Bordeaux)', ('Fedora Core', '5', 'Bordeaux')),
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
238 ('Red Hat Linux release 8.0 (Psyche)', ('Red Hat Linux', '8.0', 'Psyche')),
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
239 ('Red Hat Linux release 9 (Shrike)', ('Red Hat Linux', '9', 'Shrike')),
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
240 ('Red Hat Enterprise Linux release 4 (Nahant)', ('Red Hat Enterprise Linux', '4', 'Nahant')),
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
241 ('CentOS release 4', ('CentOS', '4', None)),
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
242 ('Rocks release 4.2.1 (Cydonia)', ('Rocks', '4.2.1', 'Cydonia')),
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
243 ('', ('', '', '')), # If there's nothing there.
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
244 ):
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
245 self.assertEqual(platform._parse_release_file(input), output)
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
246
a256791aa19d Merged revisions 77735 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52332
diff changeset
247
35900
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
248 def test_main():
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
249 test_support.run_unittest(
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
250 PlatformTest
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
251 )
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
252
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
253 if __name__ == '__main__':
e9be9e6188f4 Add a rudimentary test for the platform module that at least calls each
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
254 test_main()