Commit de57c565 authored by Ezio Melotti's avatar Ezio Melotti

#8964: fix platform._sys_version to handle IronPython 2.6+.

parent 4cf6a191
...@@ -1248,6 +1248,14 @@ _ironpython_sys_version_parser = re.compile( ...@@ -1248,6 +1248,14 @@ _ironpython_sys_version_parser = re.compile(
'(?: \(([\d\.]+)\))?' '(?: \(([\d\.]+)\))?'
' on (.NET [\d\.]+)', re.ASCII) ' on (.NET [\d\.]+)', re.ASCII)
# IronPython covering 2.6 and 2.7
_ironpython26_sys_version_parser = re.compile(
r'([\d.]+)\s*'
'\(IronPython\s*'
'[\d.]+\s*'
'\(([\d.]+)\) on ([\w.]+ [\d.]+(?: \(\d+-bit\))?)\)'
)
_pypy_sys_version_parser = re.compile( _pypy_sys_version_parser = re.compile(
r'([\w.+]+)\s*' r'([\w.+]+)\s*'
'\(#?([^,]+),\s*([\w ]+),\s*([\w :]+)\)\s*' '\(#?([^,]+),\s*([\w ]+),\s*([\w :]+)\)\s*'
...@@ -1285,19 +1293,24 @@ def _sys_version(sys_version=None): ...@@ -1285,19 +1293,24 @@ def _sys_version(sys_version=None):
return result return result
# Parse it # Parse it
if sys_version[:10] == 'IronPython': if 'IronPython' in sys_version:
# IronPython # IronPython
name = 'IronPython' name = 'IronPython'
match = _ironpython_sys_version_parser.match(sys_version) if sys_version.startswith('IronPython'):
match = _ironpython_sys_version_parser.match(sys_version)
else:
match = _ironpython26_sys_version_parser.match(sys_version)
if match is None: if match is None:
raise ValueError( raise ValueError(
'failed to parse IronPython sys.version: %s' % 'failed to parse IronPython sys.version: %s' %
repr(sys_version)) repr(sys_version))
version, alt_version, compiler = match.groups() version, alt_version, compiler = match.groups()
buildno = '' buildno = ''
builddate = '' builddate = ''
elif sys.platform[:4] == 'java': elif sys.platform.startswith('java'):
# Jython # Jython
name = 'Jython' name = 'Jython'
match = _sys_version_parser.match(sys_version) match = _sys_version_parser.match(sys_version)
......
...@@ -91,15 +91,28 @@ class PlatformTest(unittest.TestCase): ...@@ -91,15 +91,28 @@ class PlatformTest(unittest.TestCase):
("CPython", "2.6.1", "tags/r261", "67515", ("CPython", "2.6.1", "tags/r261", "67515",
('r261:67515', 'Dec 6 2008 15:26:00'), ('r261:67515', 'Dec 6 2008 15:26:00'),
'GCC 4.0.1 (Apple Computer, Inc. build 5370)'), 'GCC 4.0.1 (Apple Computer, Inc. build 5370)'),
("IronPython 2.0 (2.0.0.0) on .NET 2.0.50727.3053", None, "cli") ("IronPython 2.0 (2.0.0.0) on .NET 2.0.50727.3053", None, "cli")
: :
("IronPython", "2.0.0", "", "", ("", ""), ("IronPython", "2.0.0", "", "", ("", ""),
".NET 2.0.50727.3053"), ".NET 2.0.50727.3053"),
("2.6.1 (IronPython 2.6.1 (2.6.10920.0) on .NET 2.0.50727.1433)", None, "cli")
:
("IronPython", "2.6.1", "", "", ("", ""),
".NET 2.0.50727.1433"),
("2.7.4 (IronPython 2.7.4 (2.7.0.40) on Mono 4.0.30319.1 (32-bit))", None, "cli")
:
("IronPython", "2.7.4", "", "", ("", ""),
"Mono 4.0.30319.1 (32-bit)"),
("2.5 (trunk:6107, Mar 26 2009, 13:02:18) \n[Java HotSpot(TM) Client VM (\"Apple Computer, Inc.\")]", ("2.5 (trunk:6107, Mar 26 2009, 13:02:18) \n[Java HotSpot(TM) Client VM (\"Apple Computer, Inc.\")]",
('Jython', 'trunk', '6107'), "java1.5.0_16") ('Jython', 'trunk', '6107'), "java1.5.0_16")
: :
("Jython", "2.5.0", "trunk", "6107", ("Jython", "2.5.0", "trunk", "6107",
('trunk:6107', 'Mar 26 2009'), "java1.5.0_16"), ('trunk:6107', 'Mar 26 2009'), "java1.5.0_16"),
("2.5.2 (63378, Mar 26 2009, 18:03:29)\n[PyPy 1.0.0]", ("2.5.2 (63378, Mar 26 2009, 18:03:29)\n[PyPy 1.0.0]",
('PyPy', 'trunk', '63378'), self.save_platform) ('PyPy', 'trunk', '63378'), self.save_platform)
: :
......
...@@ -791,6 +791,7 @@ Nick Mathewson ...@@ -791,6 +791,7 @@ Nick Mathewson
Simon Mathieu Simon Mathieu
Laura Matson Laura Matson
Graham Matthews Graham Matthews
Martin Matusiak
Dieter Maurer Dieter Maurer
Daniel May Daniel May
Madison May Madison May
......
...@@ -78,6 +78,9 @@ Core and Builtins ...@@ -78,6 +78,9 @@ Core and Builtins
Library Library
------- -------
- Issue #8964: fix platform._sys_version to handle IronPython 2.6+.
Patch by Martin Matusiak.
- Issue #16038: CVE-2013-1752: ftplib: Limit amount of data read by - Issue #16038: CVE-2013-1752: ftplib: Limit amount of data read by
limiting the call to readline(). Original patch by Michał limiting the call to readline(). Original patch by Michał
Jastrzębski and Giampaolo Rodola. Jastrzębski and Giampaolo Rodola.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment