summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2022-02-09 06:06:32 -0500
committerNed Batchelder <ned@nedbatchelder.com>2022-02-09 06:08:14 -0500
commit32ff8715f080c5a3cfbeb605daa929f424b1e748 (patch)
tree852d3bae63db71fc8fbe9ed925bddd6e6e14f848
parentdacea2d09a383db32bb4620a987076b02fe009f8 (diff)
downloadpython-coveragepy-git-32ff8715f080c5a3cfbeb605daa929f424b1e748.tar.gz
fix: provide an intelligible error message for multiprocessing with no config file. #1320
-rw-r--r--CHANGES.rst5
-rw-r--r--coverage/control.py2
-rw-r--r--tests/test_concurrency.py4
3 files changed, 11 insertions, 0 deletions
diff --git a/CHANGES.rst b/CHANGES.rst
index 2111d875..f6371b23 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -23,6 +23,11 @@ Unreleased
- Debug: added ``pybehave`` to the list of :ref:`cmd_debug` and
:ref:`cmd_run_debug` options.
+- Fix: show an intelligible error message if ``--concurrency=multiprocessing``
+ is used without a configuration file. Closes `issue 1320`_.
+
+.. _issue 1320: https://github.com/nedbat/coveragepy/issues/1320
+
.. _changes_631:
diff --git a/coverage/control.py b/coverage/control.py
index 0f9f675e..910cfb08 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -462,6 +462,8 @@ class Coverage:
raise ConfigError( # pragma: only jython
"multiprocessing is not supported on this Python"
)
+ if self.config.config_file is None:
+ raise ConfigError("multiprocessing requires a configuration file")
patch_multiprocessing(rcfile=self.config.config_file)
dycon = self.config.dynamic_context
diff --git a/tests/test_concurrency.py b/tests/test_concurrency.py
index 5665e37f..1217142a 100644
--- a/tests/test_concurrency.py
+++ b/tests/test_concurrency.py
@@ -369,6 +369,10 @@ class ConcurrencyTest(CoverageTest):
with pytest.raises(ConfigError, match="Conflicting concurrency settings: eventlet, gevent"):
self.command_line("run prog.py")
+ def test_multiprocessing_needs_config_file(self):
+ with pytest.raises(ConfigError, match="multiprocessing requires a configuration file"):
+ self.command_line("run --concurrency=multiprocessing prog.py")
+
class WithoutConcurrencyModuleTest(CoverageTest):
"""Tests of what happens if the requested concurrency isn't installed."""