diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2022-02-09 06:06:32 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2022-02-09 06:08:14 -0500 |
commit | 32ff8715f080c5a3cfbeb605daa929f424b1e748 (patch) | |
tree | 852d3bae63db71fc8fbe9ed925bddd6e6e14f848 | |
parent | dacea2d09a383db32bb4620a987076b02fe009f8 (diff) | |
download | python-coveragepy-git-32ff8715f080c5a3cfbeb605daa929f424b1e748.tar.gz |
fix: provide an intelligible error message for multiprocessing with no config file. #1320
-rw-r--r-- | CHANGES.rst | 5 | ||||
-rw-r--r-- | coverage/control.py | 2 | ||||
-rw-r--r-- | tests/test_concurrency.py | 4 |
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.""" |