diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2021-01-18 18:08:56 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2021-01-18 18:23:27 -0500 |
commit | a09b1714c26cde1542044f44295600679d4368fc (patch) | |
tree | b0330905216c5a80f6c5c675494a95a00b3997a2 /coverage/optional.py | |
parent | 94239ad30e56f8f4bf01dcaf8700cdecca86e7f1 (diff) | |
download | python-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.py | 76 |
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 |