3 |
3 |
4 """Reporter foundation for coverage.py.""" |
4 """Reporter foundation for coverage.py.""" |
5 |
5 |
6 import sys |
6 import sys |
7 |
7 |
8 from coverage.exceptions import CoverageException, NotPython |
8 from coverage.exceptions import CoverageException, NoDataError, NotPython |
9 from coverage.files import prep_patterns, FnmatchMatcher |
9 from coverage.files import prep_patterns, FnmatchMatcher |
10 from coverage.misc import ensure_dir_for_file, file_be_gone |
10 from coverage.misc import ensure_dir_for_file, file_be_gone |
11 |
11 |
12 |
12 |
13 def render_report(output_path, reporter, morfs, msgfn): |
13 def render_report(output_path, reporter, morfs, msgfn): |
63 if config.report_omit: |
63 if config.report_omit: |
64 matcher = FnmatchMatcher(prep_patterns(config.report_omit), "report_omit") |
64 matcher = FnmatchMatcher(prep_patterns(config.report_omit), "report_omit") |
65 file_reporters = [fr for fr in file_reporters if not matcher.match(fr.filename)] |
65 file_reporters = [fr for fr in file_reporters if not matcher.match(fr.filename)] |
66 |
66 |
67 if not file_reporters: |
67 if not file_reporters: |
68 raise CoverageException("No data to report.") |
68 raise NoDataError("No data to report.") |
69 |
69 |
70 for fr in sorted(file_reporters): |
70 for fr in sorted(file_reporters): |
71 try: |
71 try: |
72 analysis = coverage._analyze(fr) |
72 analysis = coverage._analyze(fr) |
73 except NotPython: |
73 except NotPython: |