diff options
author | Nobuaki Sukegawa <nsuke@apache.org> | 2015-11-22 01:13:48 +0900 |
---|---|---|
committer | Nobuaki Sukegawa <nsuke@apache.org> | 2015-11-23 21:24:00 +0900 |
commit | 2de2700c34bde8d7576da148852c43a32c11e94a (patch) | |
tree | 000c7063fab3158d4b6841a4abfee4e3dfd17f43 /test/crossrunner | |
parent | 69826b21ec2e220254526063ae7fa2d3c118a6f4 (diff) | |
download | thrift-2de2700c34bde8d7576da148852c43a32c11e94a.tar.gz |
THRIFT-3439 Run make cross using Python3 when available
Client: Test
Patch: Nobuaki Sukegawa
This closes #710
Diffstat (limited to 'test/crossrunner')
-rw-r--r-- | test/crossrunner/compat.py | 21 | ||||
-rw-r--r-- | test/crossrunner/report.py | 12 | ||||
-rw-r--r-- | test/crossrunner/run.py | 13 | ||||
-rw-r--r-- | test/crossrunner/test.py | 11 |
4 files changed, 33 insertions, 24 deletions
diff --git a/test/crossrunner/compat.py b/test/crossrunner/compat.py new file mode 100644 index 000000000..70992f647 --- /dev/null +++ b/test/crossrunner/compat.py @@ -0,0 +1,21 @@ +import os +import sys + +if sys.version_info[0] == 2: + _ENCODE = sys.getfilesystemencoding() + + def path_join(*args): + bin_args = map(lambda a: a.decode(_ENCODE), args) + return os.path.join(*bin_args).encode(_ENCODE) + + def str_join(s, l): + bin_args = map(lambda a: a.decode(_ENCODE), l) + b = s.decode(_ENCODE) + return b.join(bin_args).encode(_ENCODE) + +else: + + path_join = os.path.join + + def str_join(s, l): + return s.join(l) diff --git a/test/crossrunner/report.py b/test/crossrunner/report.py index 6ffc8e2d8..bcfe181f8 100644 --- a/test/crossrunner/report.py +++ b/test/crossrunner/report.py @@ -28,7 +28,8 @@ import sys import time import traceback -from crossrunner.test import TestEntry +from .compat import path_join, str_join +from .test import TestEntry LOG_DIR = 'log' RESULT_HTML = 'result.html' @@ -84,7 +85,7 @@ class TestReporter(object): @classmethod def test_logfile(cls, test_name, prog_kind, dir=None): relpath = os.path.join('log', '%s_%s.log' % (test_name, prog_kind)) - return relpath if not dir else os.path.realpath(os.path.join(dir.decode(sys.getfilesystemencoding()), relpath.decode(sys.getfilesystemencoding())).encode(sys.getfilesystemencoding())) + return relpath if not dir else os.path.realpath(path_join(dir, relpath)) def _start(self): self._start_time = time.time() @@ -194,13 +195,8 @@ class ExecReporter(TestReporter): self.out.close() def _print_header(self): - tmp = list() - joined = '' - for item in self._prog.command: - tmp.append( item.decode(sys.getfilesystemencoding())) - joined = ' '.join(tmp).encode(sys.getfilesystemencoding()) self._print_date() - self.out.write('Executing: %s\n' % joined) + self.out.write('Executing: %s\n' % str_join(' ', self._prog.command)) self.out.write('Directory: %s\n' % self._prog.workdir) self.out.write('config:delay: %s\n' % self._test.delay) self.out.write('config:timeout: %s\n' % self._test.timeout) diff --git a/test/crossrunner/run.py b/test/crossrunner/run.py index 8de6ba92f..129016cce 100644 --- a/test/crossrunner/run.py +++ b/test/crossrunner/run.py @@ -31,8 +31,9 @@ import threading import time import traceback -from crossrunner.test import TestEntry, domain_socket_path -from crossrunner.report import ExecReporter, SummaryReporter +from .compat import str_join +from .test import TestEntry, domain_socket_path +from .report import ExecReporter, SummaryReporter RESULT_TIMEOUT = 128 RESULT_ERROR = 64 @@ -82,16 +83,12 @@ class ExecutionContext(object): return args def start(self, timeout=0): - tmp = list() - joined = '' - for item in self.cmd: - tmp.append( item.decode(sys.getfilesystemencoding())) - joined = ' '.join(tmp).encode(sys.getfilesystemencoding()) + joined = str_join(' ', self.cmd) self._log.debug('COMMAND: %s', joined) self._log.debug('WORKDIR: %s', self.cwd) self._log.debug('LOGFILE: %s', self.report.logpath) self.report.begin() - self.proc = subprocess.Popen(tmp, **self._popen_args()) + self.proc = subprocess.Popen(self.cmd, **self._popen_args()) if timeout > 0: self.timer = threading.Timer(timeout, self._expire) self.timer.start() diff --git a/test/crossrunner/test.py b/test/crossrunner/test.py index 6a30b3e0a..63219e17b 100644 --- a/test/crossrunner/test.py +++ b/test/crossrunner/test.py @@ -21,6 +21,7 @@ import copy import multiprocessing import os import sys +from .compat import path_join from crossrunner.util import merge_dict @@ -51,9 +52,7 @@ class TestProgram(object): def _fix_cmd_path(self, cmd): # if the arg is a file in the current directory, make it path def abs_if_exists(arg): - p = self.workdir.decode(sys.getfilesystemencoding()) - p = os.path.join(p, arg.decode(sys.getfilesystemencoding())) - p = p.encode(sys.getfilesystemencoding()) + p = path_join(self.workdir, arg) return p if os.path.exists(p) else arg if cmd[0] == 'python': @@ -115,11 +114,7 @@ class TestEntry(object): if os.path.isabs(path): path = os.path.realpath(path) else: - tmp = self.testdir.decode(sys.getfilesystemencoding()) - path = path.decode(sys.getfilesystemencoding()) - path = os.path.join(tmp, path) - path = path.encode(sys.getfilesystemencoding()) - path = os.path.realpath(path) + path = os.path.realpath(path_join(self.testdir, path)) config.update({key: path}) return config |