summaryrefslogtreecommitdiff
path: root/test/crossrunner
diff options
context:
space:
mode:
authorNobuaki Sukegawa <nsuke@apache.org>2015-11-22 01:13:48 +0900
committerNobuaki Sukegawa <nsuke@apache.org>2015-11-23 21:24:00 +0900
commit2de2700c34bde8d7576da148852c43a32c11e94a (patch)
tree000c7063fab3158d4b6841a4abfee4e3dfd17f43 /test/crossrunner
parent69826b21ec2e220254526063ae7fa2d3c118a6f4 (diff)
downloadthrift-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.py21
-rw-r--r--test/crossrunner/report.py12
-rw-r--r--test/crossrunner/run.py13
-rw-r--r--test/crossrunner/test.py11
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