From a70658a46414dfae2b9942a546e190bd74888f98 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Fri, 23 Mar 2018 20:58:38 -0300 Subject: [PATCH] launcher: Print test number in the order they finish Instead of the test index in the list of tests as it is meaningless to the user and feels weird. Also minor fix in the test name display when running with --forever. --- validate/launcher/baseclasses.py | 11 ++++------- validate/launcher/utils.py | 23 +++++++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/validate/launcher/baseclasses.py b/validate/launcher/baseclasses.py index fed5351d32..d0d2fab1fc 100644 --- a/validate/launcher/baseclasses.py +++ b/validate/launcher/baseclasses.py @@ -1561,10 +1561,6 @@ class _TestsLauncher(Loggable): return True return False - def get_test_num(self, test): - cur_test_num = self.tests.index(test) + 1 - return "[%d / %d] " % (cur_test_num, self.total_num_tests) - def server_wrapper(self, ready): self.server = GstValidateTCPServer( ('localhost', 0), GstValidateListener) @@ -1656,6 +1652,7 @@ class _TestsLauncher(Loggable): random.shuffle(tests) random.shuffle(alone_tests) + current_test_num = 1 for num_jobs, tests in [(max_num_jobs, tests), (1, alone_tests)]: tests_left = list(tests) for i in range(num_jobs): @@ -1666,7 +1663,8 @@ class _TestsLauncher(Loggable): while jobs_running != 0: test = self.tests_wait() jobs_running -= 1 - test.number = self.get_test_num(test) + test.number = "[%d / %d] " % (current_test_num, self.total_num_tests) + current_test_num += 1 res = test.test_end() self.reporter.after_test(test) if res != Result.PASSED and (self.options.forever or @@ -1687,8 +1685,7 @@ class _TestsLauncher(Loggable): if self.options.forever: r = 1 while True: - t = "Running iteration %d" % r - print("%s\n%s\n%s\n" % ("=" * len(t), t, "=" * len(t))) + printc("Running iteration %d" % r, title=True) if not self._run_tests(): break diff --git a/validate/launcher/utils.py b/validate/launcher/utils.py index 5eea1cfab5..b0b18243a6 100644 --- a/validate/launcher/utils.py +++ b/validate/launcher/utils.py @@ -102,6 +102,7 @@ def desactivate_colors(): Colors.FAIL = '' Colors.ENDC = '' + if not supports_ansi_colors(): desactivate_colors() @@ -145,8 +146,11 @@ def get_color_for_result(result): return color -last_cariage_return_len = 0 +last_carriage_return_len = 0 + + def printc(message, color="", title=False, title_char='', end="\n"): + global last_carriage_return_len if title or title_char: length = 0 for l in message.split("\n"): @@ -155,10 +159,13 @@ def printc(message, color="", title=False, title_char='', end="\n"): if length == 0: length = len(message) + needed_spaces = ' ' * max(0, last_carriage_return_len - length) if title is True: - message = length * "=" + "\n" + str(message) + "\n" + length * '=' + message = length * "=" + needed_spaces + "\n" \ + + str(message) + "\n" + length * '=' else: - message = str(message) + "\n" + length * title_char + message = str(message) + needed_spaces + "\n" + \ + length * title_char if hasattr(message, "result") and color == '': color = get_color_for_result(message.result) @@ -166,13 +173,8 @@ def printc(message, color="", title=False, title_char='', end="\n"): if not sys.stdout.isatty(): end = "\n" - global last_carriage_return_len - if end == "\r": - message += ' ' * max(0, last_carriage_return_len - len(message)) - last_carriage_return_len = len(message) - else: - last_carriage_return_len = 0 - + message += ' ' * max(0, last_carriage_return_len - len(message)) + last_carriage_return_len = len(message) if end == "\r" else 0 sys.stdout.write(color + str(message) + Colors.ENDC + end) sys.stdout.flush() @@ -267,6 +269,7 @@ def get_data_file(subdir, name): def gsttime_from_tuple(stime): return int((int(stime[0]) * 3600 + int(stime[1]) * 60 + int(stime[2])) * GST_SECOND + int(stime[3])) + timeregex = re.compile(r'(?P<_0>.+):(?P<_1>.+):(?P<_2>.+)\.(?P<_3>.+)')