summaryrefslogtreecommitdiff
path: root/coverage/collector.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2012-07-07 09:53:36 -0400
committerNed Batchelder <ned@nedbatchelder.com>2012-07-07 09:53:36 -0400
commit07b188473f945262949a5ce0cf3ee7b1e943a6ee (patch)
tree3884e761d0585ff13cb2260738322940a60d0fc9 /coverage/collector.py
parent31dd92b34e3d09b2110e1592d2931d7572b07191 (diff)
downloadpython-coveragepy-git-07b188473f945262949a5ce0cf3ee7b1e943a6ee.tar.gz
If the C tracer is missing during testing, make the problem immediately apparent.
Diffstat (limited to 'coverage/collector.py')
-rw-r--r--coverage/collector.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/coverage/collector.py b/coverage/collector.py
index 3fdedaad..73a14b93 100644
--- a/coverage/collector.py
+++ b/coverage/collector.py
@@ -1,12 +1,23 @@
"""Raw data collector for Coverage."""
-import sys, threading
+import os, sys, threading
try:
# Use the C extension code when we can, for speed.
from coverage.tracer import CTracer
except ImportError:
# Couldn't import the C extension, maybe it isn't built.
+ if os.getenv('COVERAGE_TEST_TRACER') == 'c':
+ # During testing, we use the COVERAGE_TEST_TRACER env var to indicate
+ # that we've fiddled with the environment to test this fallback code.
+ # If we thought we had a C tracer, but couldn't import it, then exit
+ # quickly and clearly instead of dribbling confusing errors. I'm using
+ # sys.exit here instead of an exception because an exception here
+ # causes all sorts of other noise in unittest.
+ sys.stderr.write(
+ "*** COVERAGE_TEST_TRACER is 'c' but can't import CTracer!\n"
+ )
+ sys.exit(1)
CTracer = None