diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2016-09-23 07:52:32 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2016-09-23 07:52:32 -0400 |
commit | 321e1921ca02a3dc3507eb095efd38efe6c79ba9 (patch) | |
tree | eba4d7012759963f3337e6eb830a47115a4a1cc6 | |
parent | 4052b36a13e022899ba9d3f584708d65adca1554 (diff) | |
download | python-coveragepy-git-321e1921ca02a3dc3507eb095efd38efe6c79ba9.tar.gz |
Add more debugging for thorny multiprocessing issues
-rw-r--r-- | coverage/control.py | 2 | ||||
-rw-r--r-- | coverage/data.py | 3 | ||||
-rw-r--r-- | coverage/multiproc.py | 8 | ||||
-rw-r--r-- | tests/test_data.py | 4 |
4 files changed, 15 insertions, 2 deletions
diff --git a/coverage/control.py b/coverage/control.py index 32fb30c0..3464d66f 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -721,6 +721,8 @@ class Coverage(object): def _atexit(self): """Clean up on process shutdown.""" + if self.debug and self.debug.should('dataio'): + self.debug.write("Inside _atexit: self._auto_save = %r" % (self._auto_save,)) if self._started: self.stop() if self._auto_save: diff --git a/coverage/data.py b/coverage/data.py index 98b9c8a6..95b68881 100644 --- a/coverage/data.py +++ b/coverage/data.py @@ -144,6 +144,9 @@ class CoverageData(object): # A list of dicts of information about the coverage.py runs. self._runs = [] + if self._debug and self._debug.should('dataio'): + self._debug.write("Creating CoverageData object") + def __repr__(self): return "<{klass} lines={lines} arcs={arcs} tracers={tracers} runs={runs}>".format( klass=self.__class__.__name__, diff --git a/coverage/multiproc.py b/coverage/multiproc.py index 78c680c7..fe837318 100644 --- a/coverage/multiproc.py +++ b/coverage/multiproc.py @@ -34,12 +34,18 @@ class ProcessWithCoverage(OriginalProcess): rcfile = os.environ[COVERAGE_RCFILE_ENV] cov = Coverage(data_suffix=True, config_file=rcfile) cov.start() + debug = cov.debug try: + if debug.should("multiproc"): + debug.write("Calling multiprocessing bootstrap") return original_bootstrap(self) finally: + if debug.should("multiproc"): + debug.write("Finished multiprocessing bootstrap") cov.stop() cov.save() - + if debug.should("multiproc"): + debug.write("Saved multiprocessing data") class Stowaway(object): """An object to pickle, so when it is unpickled, it can apply the monkey-patch.""" diff --git a/tests/test_data.py b/tests/test_data.py index 52702e97..4bccdcf2 100644 --- a/tests/test_data.py +++ b/tests/test_data.py @@ -554,7 +554,9 @@ class CoverageDataFilesTest(DataTestHelpers, CoverageTest): self.assertRegex( debug.get_output(), - r"^Writing data to '.*\.coverage'\n" + r"^Creating CoverageData object\n" + r"Writing data to '.*\.coverage'\n" + r"Creating CoverageData object\n" r"Reading data from '.*\.coverage'\n$" ) |