diff options
Diffstat (limited to 'lab/goals.py')
-rw-r--r-- | lab/goals.py | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/lab/goals.py b/lab/goals.py index 2c98f043..d4054607 100644 --- a/lab/goals.py +++ b/lab/goals.py @@ -18,13 +18,9 @@ import sys from wcmatch import fnmatch as wcfnmatch # python -m pip install wcmatch -from coverage.results import Numbers # Note: an internal class! +from coverage.results import Numbers # Note: an internal class! -def get_data(): - with open("coverage.json") as j: - return json.load(j) - def select_files(files, pat): flags = wcfnmatch.NEGATE | wcfnmatch.NEGATEALL selected = [f for f in files if wcfnmatch.fnmatch(f, pat, flags=flags)] @@ -38,15 +34,15 @@ def total_for_files(data, files): n_statements=sel_summ["num_statements"], n_excluded=sel_summ["excluded_lines"], n_missing=sel_summ["missing_lines"], - n_branches=sel_summ["num_branches"], - n_partial_branches=sel_summ["num_partial_branches"], - n_missing_branches=sel_summ["missing_branches"], + n_branches=sel_summ.get("num_branches", 0), + n_partial_branches=sel_summ.get("num_partial_branches", 0), + n_missing_branches=sel_summ.get("missing_branches", 0), ) return total def main(argv): - parser = argparse.ArgumentParser(__doc__) + parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--file", "-f", action="store_true", help="Check each file individually") parser.add_argument("--group", "-g", action="store_true", help="Check a group of files") parser.add_argument("--verbose", "-v", action="store_true", help="Be chatty about what's happening") @@ -54,6 +50,10 @@ def main(argv): parser.add_argument("pattern", type=str, nargs="+", help="Patterns to check") args = parser.parse_args(argv) + print("** Note: this is a proof-of-concept. Support is not promised. **") + print("Read more: https://nedbatchelder.com/blog/202111/coverage_goals.html") + print("Feedback is appreciated: https://github.com/nedbat/coveragepy/issues/691") + if args.file and args.group: print("Can't use --file and --group together") return 1 @@ -61,7 +61,8 @@ def main(argv): print("Need either --file or --group") return 1 - data = get_data() + with open("coverage.json") as j: + data = json.load(j) all_files = list(data["files"].keys()) selected = select_files(all_files, args.pattern) |