Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: utils.py

Issue 29350236: Issue 4373 - Made jshydra compatible with Python 3 (Closed)
Patch Set: Created Aug. 28, 2016, 10:11 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« tox.ini ('K') | « tox.ini ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: utils.py
===================================================================
--- a/utils.py
+++ b/utils.py
@@ -1,28 +1,33 @@
-# coding: utf-8
-
# This Source Code is subject to the terms of the Mozilla Public License
# version 2.0 (the "License"). You can obtain a copy of the License at
# http://mozilla.org/MPL/2.0/.
-from contextlib import closing
import os
import platform
-from StringIO import StringIO
-import sys
-import urllib
+import io
import zipfile
-JSSHELL_DIR = "mozilla-esr31"
-JSSHELL_URL = ("https://ftp.mozilla.org/pub/mozilla.org/firefox/nightly"
- "/2015/02/2015-02-25-00-22-19-%s/jsshell-%%s.zip" % JSSHELL_DIR)
+try:
+ from urllib.request import urlopen
+except ImportError:
+ import urllib
+ import contextlib
+
+ def urlopen(*args, **kwargs):
+ return contextlib.closing(urllib.urlopen(*args, **kwargs))
+
+JSSHELL_DIR = 'mozilla-esr31'
+JSSHELL_URL = ('https://ftp.mozilla.org/pub/mozilla.org/firefox/nightly'
+ '/2015/02/2015-02-25-00-22-19-{}'
+ '/jsshell-{{}}.zip'.format(JSSHELL_DIR))
JSSHELL_SUPPORTED_PLATFORMS = {
- "win32": "win32",
- "linux2": {
- "i686": "linux-i686",
- "x86_64": "linux-x86_64"
+ 'Windows': 'win32',
+ 'Linux': {
+ 'i686': 'linux-i686',
+ 'x86_64': 'linux-x86_64'
},
- "darwin": "mac"
+ 'Darwin': 'mac'
}
@@ -32,20 +37,21 @@
return path
baseDir = os.path.dirname(__file__)
+ system = platform.system()
Sebastian Noack 2016/08/28 22:36:14 sys.platform behaves inconsistently since Python 3
Vasily Kuznetsov 2016/08/29 15:29:52 Acknowledged.
try:
- build = JSSHELL_SUPPORTED_PLATFORMS[sys.platform]
+ build = JSSHELL_SUPPORTED_PLATFORMS[system]
if isinstance(build, dict):
build = build[platform.machine()]
except KeyError:
- raise Exception('Platform %s (%s) not supported by JS shell' % (
- sys.platform, platform.machine()
+ raise Exception('Platform {} ({}) not supported by JS shell'.format(
+ system, platform.machine()
))
shell_dir = os.path.join(baseDir, JSSHELL_DIR + "-" + build)
if not os.path.exists(shell_dir):
os.makedirs(shell_dir)
- if sys.platform == 'win32':
+ if system == 'Windows':
path = os.path.join(shell_dir, 'js.exe')
else:
path = os.path.join(shell_dir, 'js')
@@ -53,17 +59,17 @@
if os.path.exists(path):
return path
- with closing(urllib.urlopen(JSSHELL_URL % build)) as response:
+ with urlopen(JSSHELL_URL.format(build)) as response:
data = response.read()
- with zipfile.ZipFile(StringIO(data)) as zip:
- zip.extractall(shell_dir)
+ with zipfile.ZipFile(io.BytesIO(data)) as archive:
+ archive.extractall(shell_dir)
if not os.path.exists(path):
raise Exception('Downloaded package didn\'t contain JS shell executable')
try:
- os.chmod(path, 0700)
+ os.chmod(path, 0o700)
except:
pass
« tox.ini ('K') | « tox.ini ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld