diff --git a/tests/test-runner/cmd/test-runner.py b/tests/test-runner/cmd/test-runner.py index a2b3830b4e..7ef8a87ed3 100755 --- a/tests/test-runner/cmd/test-runner.py +++ b/tests/test-runner/cmd/test-runner.py @@ -16,7 +16,12 @@ # Copyright (c) 2017 Datto Inc. # -import ConfigParser +# some python 2.7 system don't have a configparser shim +try: + import configparser +except ImportError: + import ConfigParser as configparser + import os import logging from datetime import datetime @@ -27,7 +32,7 @@ from select import select from subprocess import PIPE from subprocess import Popen from sys import argv -from sys import maxint +from sys import maxsize from threading import Timer from time import time @@ -204,23 +209,23 @@ class Cmd(object): if needed. Run the command, and update the result object. """ if options.dryrun is True: - print self + print(self) return privcmd = self.update_cmd_privs(self.pathname, self.user) try: old = os.umask(0) if not os.path.isdir(self.outputdir): - os.makedirs(self.outputdir, mode=0777) + os.makedirs(self.outputdir, mode=0o777) os.umask(old) - except OSError, e: + except OSError as e: fail('%s' % e) self.result.starttime = time() proc = Popen(privcmd, stdout=PIPE, stderr=PIPE) # Allow a special timeout value of 0 to mean infinity if int(self.timeout) == 0: - self.timeout = maxint + self.timeout = maxsize t = Timer(int(self.timeout), self.kill_cmd, [proc]) try: @@ -274,7 +279,7 @@ class Cmd(object): logger.debug('%s%s%s' % (msga, pad, msgb)) lines = sorted(self.result.stdout + self.result.stderr, - cmp=lambda x, y: cmp(x[0], y[0])) + key=lambda x: x[0]) for dt, line in lines: logger.debug('%s %s' % (dt.strftime("%H:%M:%S.%f ")[:11], line)) @@ -552,7 +557,7 @@ class TestRun(object): in the 'DEFAULT' section. If the Test or TestGroup passes verification, add it to the TestRun. """ - config = ConfigParser.RawConfigParser() + config = configparser.RawConfigParser() if not len(config.read(options.runfile)): fail("Coulnd't read config file %s" % options.runfile) @@ -608,7 +613,7 @@ class TestRun(object): defaults = dict([(prop, getattr(options, prop)) for prop, _ in self.defaults]) - config = ConfigParser.RawConfigParser(defaults) + config = configparser.RawConfigParser(defaults) for test in sorted(self.tests.keys()): config.add_section(test) @@ -637,14 +642,15 @@ class TestRun(object): """ done = False components = 0 - tmp_dict = dict(self.tests.items() + self.testgroups.items()) + tmp_dict = dict(list(self.tests.items()) + + list(self.testgroups.items())) total = len(tmp_dict) base = self.outputdir while not done: paths = [] components -= 1 - for testfile in tmp_dict.keys(): + for testfile in list(tmp_dict.keys()): uniq = '/'.join(testfile.split('/')[components:]).lstrip('/') if uniq not in paths: paths.append(uniq) @@ -672,9 +678,9 @@ class TestRun(object): if options.cmd is not 'wrconfig': try: old = os.umask(0) - os.makedirs(self.outputdir, mode=0777) + os.makedirs(self.outputdir, mode=0o777) os.umask(old) - except OSError, e: + except OSError as e: fail('%s' % e) filename = os.path.join(self.outputdir, 'log') @@ -707,8 +713,8 @@ class TestRun(object): if not os.path.exists(logsymlink): os.symlink(self.outputdir, logsymlink) else: - print 'Could not make a symlink to directory %s' % ( - self.outputdir) + print('Could not make a symlink to directory %s' % ( + self.outputdir)) iteration = 0 while iteration < options.iterations: for test in sorted(self.tests.keys()): @@ -721,17 +727,17 @@ class TestRun(object): if Result.total is 0: return 2 - print '\nResults Summary' - for key in Result.runresults.keys(): + print('\nResults Summary') + for key in list(Result.runresults.keys()): if Result.runresults[key] is not 0: - print '%s\t% 4d' % (key, Result.runresults[key]) + print('%s\t% 4d' % (key, Result.runresults[key])) m, s = divmod(time() - self.starttime, 60) h, m = divmod(m, 60) - print '\nRunning Time:\t%02d:%02d:%02d' % (h, m, s) - print 'Percent passed:\t%.1f%%' % ((float(Result.runresults['PASS']) / - float(Result.total)) * 100) - print 'Log directory:\t%s' % self.outputdir + print('\nRunning Time:\t%02d:%02d:%02d' % (h, m, s)) + print('Percent passed:\t%.1f%%' % ((float(Result.runresults['PASS']) / + float(Result.total)) * 100)) + print('Log directory:\t%s' % self.outputdir) if Result.runresults['FAIL'] > 0: return 1 @@ -804,7 +810,7 @@ def find_tests(testrun, options): def fail(retstr, ret=1): - print '%s: %s' % (argv[0], retstr) + print('%s: %s' % (argv[0], retstr)) exit(ret)