mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 02:15:45 +01:00 
			
		
		
		
	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 <sjg@chromium.org>
This commit is contained in:
		| @@ -10,6 +10,7 @@ | |||||||
|  |  | ||||||
| """See README for more information""" | """See README for more information""" | ||||||
|  |  | ||||||
|  | import glob | ||||||
| import os | import os | ||||||
| import sys | import sys | ||||||
| import traceback | import traceback | ||||||
| @@ -67,12 +68,27 @@ def RunTestCoverage(): | |||||||
|             'tools/binman/binman.py -t' % options.build_dir) |             'tools/binman/binman.py -t' % options.build_dir) | ||||||
|     os.system(cmd) |     os.system(cmd) | ||||||
|     stdout = command.Output('coverage', 'report') |     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%': |     if coverage != '100%': | ||||||
|         print stdout |         print stdout | ||||||
|         print "Type 'coverage html' to get a report in htmlcov/index.html" |         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): | def RunBinman(options, args): | ||||||
|     """Main entry point to binman once arguments are parsed |     """Main entry point to binman once arguments are parsed | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user