Commit a79e2c29 authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

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.
parent 3f303c10
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -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()
+0 −4
Original line number Diff line number Diff line
@@ -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