diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/helpers.py | 19 | ||||
-rw-r--r-- | tests/test_config.py | 10 | ||||
-rw-r--r-- | tests/test_testing.py | 19 |
3 files changed, 34 insertions, 14 deletions
diff --git a/tests/helpers.py b/tests/helpers.py index 9c6a0ad8..0621d7a9 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -10,6 +10,7 @@ import shutil import subprocess import sys +import mock from unittest_mixins import ModuleCleaner from coverage import env @@ -203,3 +204,21 @@ def arcs_to_arcz_repr(arcs): line += _arcs_to_arcz_repr_one(b) repr_list.append(line) return "\n".join(repr_list) + "\n" + + +def without_module(using_module, missing_module_name): + """ + Hide a module for testing. + + Use this in a test function to make an optional module unavailable during + the test:: + + with without_module(product.something, 'toml'): + use_toml_somehow() + + Arguments: + using_module: a module in which to hide `missing_module_name`. + missing_module_name (str): the name of the module to hide. + + """ + return mock.patch.object(using_module, missing_module_name, None) diff --git a/tests/test_config.py b/tests/test_config.py index dd86303f..4225540c 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -10,9 +10,9 @@ import mock import coverage from coverage.misc import CoverageException -import coverage.optional from tests.coveragetest import CoverageTest, UsingModulesMixin +from tests.helpers import without_module class ConfigTest(CoverageTest): @@ -712,7 +712,7 @@ class ConfigFileTest(UsingModulesMixin, CoverageTest): def test_no_toml_installed_no_toml(self): # Can't read a toml file that doesn't exist. - with coverage.optional.without('toml'): + with without_module(coverage.tomlconfig, 'toml'): msg = "Couldn't read 'cov.toml' as a config file" with self.assertRaisesRegex(CoverageException, msg): coverage.Coverage(config_file="cov.toml") @@ -720,7 +720,7 @@ class ConfigFileTest(UsingModulesMixin, CoverageTest): def test_no_toml_installed_explicit_toml(self): # Can't specify a toml config file if toml isn't installed. self.make_file("cov.toml", "# A toml file!") - with coverage.optional.without('toml'): + with without_module(coverage.tomlconfig, 'toml'): msg = "Can't read 'cov.toml' without TOML support" with self.assertRaisesRegex(CoverageException, msg): coverage.Coverage(config_file="cov.toml") @@ -732,7 +732,7 @@ class ConfigFileTest(UsingModulesMixin, CoverageTest): [tool.coverage.run] xyzzy = 17 """) - with coverage.optional.without('toml'): + with without_module(coverage.tomlconfig, 'toml'): msg = "Can't read 'pyproject.toml' without TOML support" with self.assertRaisesRegex(CoverageException, msg): coverage.Coverage() @@ -744,7 +744,7 @@ class ConfigFileTest(UsingModulesMixin, CoverageTest): [tool.something] xyzzy = 17 """) - with coverage.optional.without('toml'): + with without_module(coverage.tomlconfig, 'toml'): cov = coverage.Coverage() # We get default settings: self.assertFalse(cov.config.timid) diff --git a/tests/test_testing.py b/tests/test_testing.py index c5d46430..34ea3263 100644 --- a/tests/test_testing.py +++ b/tests/test_testing.py @@ -12,14 +12,16 @@ import sys import pytest import coverage +from coverage import tomlconfig from coverage.backunittest import TestCase, unittest from coverage.files import actual_path from coverage.misc import StopEverything -import coverage.optional from tests.coveragetest import CoverageTest, convert_skip_exceptions -from tests.helpers import arcs_to_arcz_repr, arcz_to_arcs -from tests.helpers import CheckUniqueFilenames, re_lines, re_line +from tests.helpers import ( + arcs_to_arcz_repr, arcz_to_arcs, + CheckUniqueFilenames, re_lines, re_line, without_module, +) def test_xdist_sys_path_nuttiness_is_fixed(): @@ -323,12 +325,11 @@ def _same_python_executable(e1, e2): return False # pragma: only failure -def test_optional_without(): - # pylint: disable=reimported - from coverage.optional import toml as toml1 - with coverage.optional.without('toml'): - from coverage.optional import toml as toml2 - from coverage.optional import toml as toml3 +def test_without_module(): + toml1 = tomlconfig.toml + with without_module(tomlconfig, 'toml'): + toml2 = tomlconfig.toml + toml3 = tomlconfig.toml assert toml1 is toml3 is not None assert toml2 is None |