diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-12-23 21:39:54 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-12-23 21:39:54 -0500 |
commit | 748cb493c6cef5d72fede01a57cc22c3843c9393 (patch) | |
tree | 51e6c37bde38b845d83226597c90a0a00310aed8 /coverage/control.py | |
parent | 7d8aeab9df3ac0b888a090c82b2b90871dae4b58 (diff) | |
download | python-coveragepy-git-748cb493c6cef5d72fede01a57cc22c3843c9393.tar.gz |
A way to start coverage when Python starts, to help with measuring coverage in subprocesses.
Diffstat (limited to 'coverage/control.py')
-rw-r--r-- | coverage/control.py | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/coverage/control.py b/coverage/control.py index c1d32e9d..4acef710 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -1,6 +1,6 @@ """Core control stuff for Coverage.""" -import atexit, os, socket +import atexit, os, random, socket from coverage.annotate import AnnotateReporter from coverage.backward import string_class @@ -98,8 +98,10 @@ class coverage(object): # Create the data file. if data_suffix: if not isinstance(data_suffix, string_class): - # if data_suffix=True, use .machinename.pid - data_suffix = ".%s.%s" % (socket.gethostname(), os.getpid()) + # if data_suffix=True, use .machinename.pid.random + data_suffix = ".%s.%s.%06d" % ( + socket.gethostname(), os.getpid(), random.randint(0,999999) + ) else: data_suffix = None @@ -369,3 +371,22 @@ class coverage(object): ]), ] return info + + +def measure_process(): + """Called at Python startup time to perhaps measure coverage. + + If the environment variable COVERAGE_PROCESS_START is defined, coverage + measurement is started, and the value of the variable is the data file + prefix to use. + + """ + cps = os.environ.get("COVERAGE_PROCESS_START") + if cps: + cov = coverage( + auto_data=True, data_file=cps, data_suffix=True, branch=True + ) + if os.environ.get("COVERAGE_COVERAGE"): + # Measuring coverage within coverage.py takes yet more trickery. + cov.cover_prefix = "Please measure coverage.py!" + cov.start() |