summaryrefslogtreecommitdiff
path: root/coverage
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2016-01-02 16:28:02 -0500
committerNed Batchelder <ned@nedbatchelder.com>2016-01-02 16:28:02 -0500
commita0aa685214e9cccc361cddafea937346bd6dfdad (patch)
treec089983f78e4d1a13282b28407450631c89ed64d /coverage
parent3440e214df5ddd0f507ecd76c2350eb8d9dd6a75 (diff)
parent8b110d3a3f7fbddfcbdaa1b090776e0f388a312e (diff)
downloadpython-coveragepy-git-a0aa685214e9cccc361cddafea937346bd6dfdad.tar.gz
Merge in the default branch
--HG-- branch : ast-branch
Diffstat (limited to 'coverage')
-rw-r--r--coverage/monkey.py42
-rw-r--r--coverage/parser.py5
-rw-r--r--coverage/phystokens.py2
3 files changed, 27 insertions, 22 deletions
diff --git a/coverage/monkey.py b/coverage/monkey.py
index c4ec68c6..b896dbf5 100644
--- a/coverage/monkey.py
+++ b/coverage/monkey.py
@@ -11,6 +11,28 @@ import sys
# monkey-patched.
PATCHED_MARKER = "_coverage$patched"
+if sys.version_info >= (3, 4):
+
+ klass = multiprocessing.process.BaseProcess
+else:
+ klass = multiprocessing.Process
+
+original_bootstrap = klass._bootstrap
+
+
+class ProcessWithCoverage(klass):
+ """A replacement for multiprocess.Process that starts coverage."""
+ def _bootstrap(self):
+ """Wrapper around _bootstrap to start coverage."""
+ from coverage import Coverage
+ cov = Coverage(data_suffix=True)
+ cov.start()
+ try:
+ return original_bootstrap(self)
+ finally:
+ cov.stop()
+ cov.save()
+
def patch_multiprocessing():
"""Monkey-patch the multiprocessing module.
@@ -23,26 +45,6 @@ def patch_multiprocessing():
return
if sys.version_info >= (3, 4):
- klass = multiprocessing.process.BaseProcess
- else:
- klass = multiprocessing.Process
-
- original_bootstrap = klass._bootstrap
-
- class ProcessWithCoverage(klass):
- """A replacement for multiprocess.Process that starts coverage."""
- def _bootstrap(self):
- """Wrapper around _bootstrap to start coverage."""
- from coverage import Coverage
- cov = Coverage(data_suffix=True)
- cov.start()
- try:
- return original_bootstrap(self)
- finally:
- cov.stop()
- cov.save()
-
- if sys.version_info >= (3, 4):
klass._bootstrap = ProcessWithCoverage._bootstrap
else:
multiprocessing.Process = ProcessWithCoverage
diff --git a/coverage/parser.py b/coverage/parser.py
index d85f0b57..c11bc222 100644
--- a/coverage/parser.py
+++ b/coverage/parser.py
@@ -98,7 +98,10 @@ class PythonParser(object):
part of it.
"""
- regex_c = re.compile(join_regex(regexes))
+ combined = join_regex(regexes)
+ if env.PY2:
+ combined = combined.decode("utf8")
+ regex_c = re.compile(combined)
matches = set()
for i, ltext in enumerate(self.lines, start=1):
if regex_c.search(ltext):
diff --git a/coverage/phystokens.py b/coverage/phystokens.py
index b34b1c3b..5aa3402c 100644
--- a/coverage/phystokens.py
+++ b/coverage/phystokens.py
@@ -291,5 +291,5 @@ def compile_unicode(source, filename, mode):
@contract(source='unicode', returns='unicode')
def neuter_encoding_declaration(source):
"""Return `source`, with any encoding declaration neutered."""
- source = COOKIE_RE.sub("# (deleted declaration)", source, count=1)
+ source = COOKIE_RE.sub("# (deleted declaration)", source, count=2)
return source