diff options
Diffstat (limited to 'coverage')
-rw-r--r-- | coverage/cmdline.py | 17 | ||||
-rw-r--r-- | coverage/control.py | 21 |
2 files changed, 27 insertions, 11 deletions
diff --git a/coverage/cmdline.py b/coverage/cmdline.py index cdcf3178..b739afab 100644 --- a/coverage/cmdline.py +++ b/coverage/cmdline.py @@ -4,7 +4,7 @@ import optparse, re, sys, traceback from coverage.backward import sorted # pylint: disable=W0622 from coverage.execfile import run_python_file, run_python_module -from coverage.misc import CoverageException, ExceptionDuringRun +from coverage.misc import CoverageException, ExceptionDuringRun, NoSource class Opts(object): @@ -511,13 +511,18 @@ class CoverageScript(object): if 'execute' in options.actions: # Run the script. self.coverage.start() + never_run = False try: - if options.module: - self.run_python_module(args[0], args) - else: - self.run_python_file(args[0], args) + try: + if options.module: + self.run_python_module(args[0], args) + else: + self.run_python_file(args[0], args) + except NoSource: + never_run = True + raise finally: - self.coverage.stop() + self.coverage.stop(never_run) self.coverage.save() if 'combine' in options.actions: diff --git a/coverage/control.py b/coverage/control.py index 514f23d9..6fc1b98d 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -172,6 +172,10 @@ class coverage(object): # Only _harvest_data once per measurement cycle. self._harvested = False + + # When stop() is called, we can tell it that in fact no product code + # was run, to make the warnings more reasonable. + self._never_run = False # Set the reporting precision. Numbers.set_precision(self.config.precision) @@ -361,8 +365,14 @@ class coverage(object): self._harvested = False self.collector.start() - def stop(self): - """Stop measuring code coverage.""" + def stop(self, never_run=False): + """Stop measuring code coverage. + + Set `never_run` to True to indicate that no product code was run, so + we don't warn unnecessarily. + + """ + self._never_run = never_run self.collector.stop() self._harvest_data() @@ -444,9 +454,10 @@ class coverage(object): self._warn("Module %s was never imported." % pkg) # Find out if we got any data. - summary = self.data.summary() - if not summary: - self._warn("No data was collected.") + if not self._never_run: + summary = self.data.summary() + if not summary: + self._warn("No data was collected.") # Find files that were never executed at all. for src in self.source: |