commit a79e2c2975f478045c1a3a6fdd34d22d355cce8b Author: Nick Mathewson nickm@torproject.org Date: Tue Jul 30 11:54:05 2019 -0400
practracker: better warning/regen handling
Now that there is only one toplevel place where we print problems, we can redirect just that one print to a file when we are regenerating the exceptions.txt file. Previously we redirected sys.stdout, which is naughty, and forced us to send warnings (and warnings alone) to stderr. --- scripts/maint/practracker/practracker.py | 9 +++++---- scripts/maint/practracker/problem.py | 4 ---- 2 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/scripts/maint/practracker/practracker.py b/scripts/maint/practracker/practracker.py index fb6649bdc..a60b0a842 100755 --- a/scripts/maint/practracker/practracker.py +++ b/scripts/maint/practracker/practracker.py @@ -192,11 +192,11 @@ def main(argv): if args.regen: tmpname = exceptions_file + ".tmp" tmpfile = open(tmpname, "w") - sys.stdout = tmpfile - sys.stdout.write(HEADER) + problem_file = tmpfile ProblemVault = problem.ProblemVault() else: ProblemVault = problem.ProblemVault(exceptions_file) + problem_file = sys.stdout
# 2.1) Adjust the exceptions so that we warn only about small problems, # and produce errors on big ones. @@ -208,10 +208,11 @@ def main(argv): for item in filt.filter(consider_all_metrics(files_list)): status = ProblemVault.register_problem(item) if status == problem.STATUS_ERR: - print(item) + print(item, file=problem_file) found_new_issues += 1 elif status == problem.STATUS_WARN: - item.warn() + # warnings always go to stdout. + print("(warning) {}".format(item))
if args.regen: tmpfile.close() diff --git a/scripts/maint/practracker/problem.py b/scripts/maint/practracker/problem.py index d162e19ef..d09e94151 100644 --- a/scripts/maint/practracker/problem.py +++ b/scripts/maint/practracker/problem.py @@ -145,10 +145,6 @@ class Item(object): else: return STATUS_OK
- def warn(self): - """Warn about this problem on stderr only.""" - print("(warning) {}".format(self), file=sys.stderr) - def key(self): """Generate a unique key that describes this problem that can be used as a dictionary key""" # Item location is a filesystem path, so we need to normalize this