From: Simon Glass Date: Mon, 13 Nov 2017 04:52:24 +0000 (-0700) Subject: binman: Check for files missing from test coverage X-Git-Tag: v2018.01-rc1~69^2~5 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=a25ebed36fcf95d09629e8d2e95fdf4907798fb5;p=u-boot binman: Check for files missing from test coverage Files that are never imported are not shown in the test-coverage report. Detect these and show an error. Signed-off-by: Simon Glass --- diff --git a/tools/binman/binman.py b/tools/binman/binman.py index cf83edfd04..7ad4d3030b 100755 --- a/tools/binman/binman.py +++ b/tools/binman/binman.py @@ -10,6 +10,7 @@ """See README for more information""" +import glob import os import sys import traceback @@ -67,12 +68,27 @@ def RunTestCoverage(): 'tools/binman/binman.py -t' % options.build_dir) os.system(cmd) stdout = command.Output('coverage', 'report') - coverage = stdout.splitlines()[-1].split(' ')[-1] + lines = stdout.splitlines() + + test_set= set([os.path.basename(line.split()[0]) + for line in lines if '/etype/' in line]) + glob_list = glob.glob(os.path.join(our_path, 'etype/*.py')) + all_set = set([os.path.basename(item) for item in glob_list]) + missing_list = all_set + missing_list.difference_update(test_set) + missing_list.remove('_testing.py') + coverage = lines[-1].split(' ')[-1] + ok = True + if missing_list: + print 'Missing tests for %s' % (', '.join(missing_list)) + ok = False if coverage != '100%': print stdout print "Type 'coverage html' to get a report in htmlcov/index.html" - raise ValueError('Coverage error: %s, but should be 100%%' % coverage) - + print 'Coverage error: %s, but should be 100%%' % coverage + ok = False + if not ok: + raise ValueError('Test coverage failure') def RunBinman(options, args): """Main entry point to binman once arguments are parsed