summaryrefslogtreecommitdiff
path: root/coverage/optional.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2021-01-18 18:08:56 -0500
committerNed Batchelder <ned@nedbatchelder.com>2021-01-18 18:23:27 -0500
commita09b1714c26cde1542044f44295600679d4368fc (patch)
treeb0330905216c5a80f6c5c675494a95a00b3997a2 /coverage/optional.py
parent94239ad30e56f8f4bf01dcaf8700cdecca86e7f1 (diff)
downloadpython-coveragepy-git-a09b1714c26cde1542044f44295600679d4368fc.tar.gz
Simplify the testing of the toml extra, fixing #1084
Diffstat (limited to 'coverage/optional.py')
-rw-r--r--coverage/optional.py76
1 files changed, 0 insertions, 76 deletions
diff --git a/coverage/optional.py b/coverage/optional.py
deleted file mode 100644
index 507a1ada..00000000
--- a/coverage/optional.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
-# For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
-
-"""
-Imports that we need at runtime, but might not be present.
-
-When importing one of these modules, always do it in the function where you
-need the module. Some tests will need to remove the module. If you import
-it at the top level of your module, then the test won't be able to simulate
-the module being unimportable.
-
-The import will always succeed, but the value will be None if the module is
-unavailable.
-
-Bad::
-
- # MyModule.py
- import unsure
-
- def use_unsure():
- unsure.something()
-
-Also bad::
-
- # MyModule.py
- from coverage.optional import unsure
-
- def use_unsure():
- unsure.something()
-
-Good::
-
- # MyModule.py
-
- def use_unsure():
- from coverage.optional import unsure
- if unsure is None:
- raise Exception("Module unsure isn't available!")
-
- unsure.something()
-
-"""
-
-import contextlib
-
-# This file's purpose is to provide modules to be imported from here.
-# pylint: disable=unused-import
-
-# TOML support is an install-time extra option.
-try:
- import toml
-except ImportError: # pragma: not covered
- toml = None
-
-
-@contextlib.contextmanager
-def without(modname):
- """Hide a module for testing.
-
- Use this in a test function to make an optional module unavailable during
- the test::
-
- with coverage.optional.without('toml'):
- use_toml_somehow()
-
- Arguments:
- modname (str): the name of a module importable from
- `coverage.optional`.
-
- """
- real_module = globals()[modname]
- try:
- globals()[modname] = None
- yield
- finally:
- globals()[modname] = real_module