Tobias Hieta f98ee40f4b
[NFC][Py Reformat] Reformat python files in the rest of the dirs
This is an ongoing series of commits that are reformatting our
Python code. This catches the last of the python files to
reformat. Since they where so few I bunched them together.

Reformatting is done with `black`.

If you end up having problems merging this commit because you
have made changes to a python file, the best way to handle that
is to run git checkout --ours <yourfile> and then reformat it
with black.

If you run into any problems, post to discourse about it and
we will try to help.

RFC Thread below:

https://discourse.llvm.org/t/rfc-document-and-standardize-python-code-style

Reviewed By: jhenderson, #libc, Mordante, sivachandra

Differential Revision: https://reviews.llvm.org/D150784
2023-05-25 11:17:05 +02:00

92 lines
2.9 KiB
Python

import os
import sys
import argparse
import re
class Checks(object):
class CheckError(Exception):
pass
def __init__(self, filename, prefix):
self.checks = []
self.lines = []
self.check_no_output = False
self.filename = filename
self.prefix = prefix
def readStdin(self):
self.lines = [l.rstrip("\r\n") for l in sys.stdin.readlines()]
def readChecks(self):
with open(self.filename) as f:
for line in f:
match = re.search("{}: NO_OUTPUT".format(self.prefix), line)
if match is not None:
self.check_no_output = True
return
match = re.search(
"{}: num_threads=([0-9]+) (.*)$".format(self.prefix), line
)
if match is not None:
num_threads = int(match.group(1))
for i in range(num_threads):
self.checks.append(match.group(2))
continue
def check(self):
# If no checks at all, then nothing to do
if len(self.checks) == 0 and not self.check_no_output:
print("Nothing to check for")
return
# Check if we are expecting no output
if self.check_no_output:
if len(self.lines) == 0:
return
else:
raise Checks.CheckError(
"{}: Output was found when expecting none.".format(self.prefix)
)
# Run through each check line and see if it exists in the output
# If it does, then delete the line from output and look for the
# next check line.
# If you don't find the line then raise Checks.CheckError
# If there are extra lines of output then raise Checks.CheckError
for c in self.checks:
found = False
index = -1
for idx, line in enumerate(self.lines):
if re.search(c, line) is not None:
found = True
index = idx
break
if not found:
raise Checks.CheckError("{}: Did not find: {}".format(self.prefix, c))
else:
del self.lines[index]
if len(self.lines) != 0:
raise Checks.CheckError(
"{}: Extra output: {}".format(self.prefix, self.lines)
)
# Setup argument parsing
parser = argparse.ArgumentParser(
description="""This script checks output of
a program against "CHECK" lines in filename"""
)
parser.add_argument("filename", default=None, help="filename to check against")
parser.add_argument(
"-c",
"--check-prefix",
dest="prefix",
default="CHECK",
help="check prefix token default: %(default)s",
)
command_args = parser.parse_args()
# Do the checking
checks = Checks(command_args.filename, command_args.prefix)
checks.readStdin()
checks.readChecks()
checks.check()