summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/helpers.py19
-rw-r--r--tests/test_config.py10
-rw-r--r--tests/test_testing.py19
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