aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo
diff options
context:
space:
mode:
Diffstat (limited to 'python/servo')
-rw-r--r--python/servo/testing_commands.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py
index bb25cb301cf..483f9c7c2c9 100644
--- a/python/servo/testing_commands.py
+++ b/python/servo/testing_commands.py
@@ -529,6 +529,8 @@ class MachCommands(CommandBase):
help='Print filtered log to file')
@CommandArgument('--log-intermittents', default=None,
help='Print intermittents to file')
+ @CommandArgument('--json', dest="json_mode", default=False, action="store_true",
+ help='Output filtered and intermittents as JSON')
@CommandArgument('--auth', default=None,
help='File containing basic authorization credentials for Github API (format `username:password`)')
@CommandArgument('--tracker-api', default=None, action='store',
@@ -539,6 +541,7 @@ class MachCommands(CommandBase):
summary,
log_filteredsummary,
log_intermittents,
+ json_mode,
auth,
tracker_api,
reporter_api):
@@ -551,6 +554,7 @@ class MachCommands(CommandBase):
failures = [json.loads(line) for line in file]
actual_failures = []
intermittents = []
+ progress = 0
for failure in failures:
if tracker_api:
if tracker_api == 'default':
@@ -576,21 +580,31 @@ class MachCommands(CommandBase):
data = json.load(search)
is_intermittent = data['total_count'] > 0
+ progress += 1
+ print(f" [{progress}/{len(failures)}]", file=sys.stderr, end="\r")
+
if is_intermittent:
- if 'output' in failure:
+ if json_mode:
+ intermittents.append(failure)
+ elif 'output' in failure:
intermittents.append(failure["output"])
else:
intermittents.append("%s [expected %s] %s \n"
% (failure["status"], failure["expected"], failure['test']))
else:
- if 'output' in failure:
+ if json_mode:
+ actual_failures.append(failure)
+ elif 'output' in failure:
actual_failures.append(failure["output"])
else:
actual_failures.append("%s [expected %s] %s \n"
% (failure["status"], failure["expected"], failure['test']))
def format(outputs, description, file=sys.stdout):
- formatted = "%s %s:\n%s" % (len(outputs), description, "\n".join(outputs))
+ if json_mode:
+ formatted = json.dumps(outputs)
+ else:
+ formatted = "%s %s:\n%s" % (len(outputs), description, "\n".join(outputs))
if file == sys.stdout:
file.write(formatted)
else: