summaryrefslogtreecommitdiff
path: root/coverage
diff options
context:
space:
mode:
Diffstat (limited to 'coverage')
-rw-r--r--coverage/cmdline.py7
-rw-r--r--coverage/control.py16
2 files changed, 17 insertions, 6 deletions
diff --git a/coverage/cmdline.py b/coverage/cmdline.py
index 8c6688a8..39d92927 100644
--- a/coverage/cmdline.py
+++ b/coverage/cmdline.py
@@ -9,10 +9,11 @@ Coverage version %(__version__)s
Usage:
-coverage -x [-p] MODULE.py [ARG1 ARG2 ...]
+coverage -x [-p] [-L] MODULE.py [ARG1 ARG2 ...]
Execute the module, passing the given command-line arguments, collecting
coverage data. With the -p option, include the machine name and process
- ID in the .coverage file name.
+ ID in the .coverage file name. With -L, measure coverage even inside the
+ Python standard library, which isn't done by default.
coverage -e
Erase collected coverage data.
@@ -86,6 +87,7 @@ class CoverageScript:
'-e': 'erase',
'-h': 'help',
'-i': 'ignore-errors',
+ '-L': 'stdlib',
'-m': 'show-missing',
'-p': 'parallel-mode',
'-r': 'report',
@@ -135,6 +137,7 @@ class CoverageScript:
# Do something.
self.coverage.parallel_mode = settings.get('parallel-mode')
+ self.coverage.cover_stdlib = settings.get('stdlib')
self.coverage.get_ready()
if settings.get('erase'):
diff --git a/coverage/control.py b/coverage/control.py
index d03c69b3..6d3187d6 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -1,6 +1,6 @@
"""Core control stuff for coverage.py"""
-import os, socket
+import os, socket, sys
from coverage.annotate import AnnotateReporter
from coverage.codeunit import code_unit_factory
@@ -17,11 +17,13 @@ class coverage:
self.parallel_mode = False
self.exclude_re = ''
+ self.cover_stdlib = False
self.nesting = 0
+
self.file_locator = FileLocator()
+ self.sysprefix = self.file_locator.abs_file(sys.prefix)
self.collector = Collector(self.should_trace)
-
self.data = CoverageData(collector="coverage.py v%s" % __version__)
# The default exclude pattern.
@@ -36,14 +38,20 @@ class coverage:
Returns a canonicalized filename if it should be traced, False if it
should not.
+
"""
if filename == '<string>':
# There's no point in ever tracing string executions, we can't do
# anything with the data later anyway.
return False
- # TODO: flag: ignore std lib?
+
+ canonical = self.file_locator.canonical_filename(filename)
+ if not self.cover_stdlib:
+ if canonical.startswith(self.sysprefix):
+ return False
+
# TODO: ignore by module as well as file?
- return self.file_locator.canonical_filename(filename)
+ return canonical
def use_cache(self, usecache):
"""Control the use of a data file (incorrectly called a cache).