summaryrefslogtreecommitdiff
path: root/coverage
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2011-02-07 08:37:14 -0500
committerNed Batchelder <ned@nedbatchelder.com>2011-02-07 08:37:14 -0500
commit2419ccf5218042b6caf9e972873d4815490c2690 (patch)
treecaa84ed53ee0f10f31efc23057eabfb0c1bb0d48 /coverage
parent1a347c5401d6fe8b6f43307339fca40a1ef49bc6 (diff)
downloadpython-coveragepy-git-2419ccf5218042b6caf9e972873d4815490c2690.tar.gz
Don't warn about not collecting data if we never ran any code in the first place.
Diffstat (limited to 'coverage')
-rw-r--r--coverage/cmdline.py17
-rw-r--r--coverage/control.py21
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: