summary refs log tree commit diff
path: root/tests/util/test_check_dependencies.py
diff options
context:
space:
mode:
authorDavid Robertson <davidr@element.io>2022-09-29 21:16:08 +0100
committerGitHub <noreply@github.com>2022-09-29 20:16:08 +0000
commit6f0c3e669da458e838e7b4b165a13e8a5312d6d0 (patch)
tree32302c0d8b68862443ee25947eb64bf429b63a90 /tests/util/test_check_dependencies.py
parentUpdate UPSERT comment now that native upserts are the default (#13924) (diff)
downloadsynapse-6f0c3e669da458e838e7b4b165a13e8a5312d6d0.tar.xz
Don't require `setuptools_rust` at runtime (#13952)
Diffstat (limited to 'tests/util/test_check_dependencies.py')
-rw-r--r--tests/util/test_check_dependencies.py20
1 files changed, 18 insertions, 2 deletions
diff --git a/tests/util/test_check_dependencies.py b/tests/util/test_check_dependencies.py
index 5d1aa025d1..6913de24b9 100644
--- a/tests/util/test_check_dependencies.py
+++ b/tests/util/test_check_dependencies.py
@@ -40,7 +40,10 @@ class TestDependencyChecker(TestCase):
     def mock_installed_package(
         self, distribution: Optional[DummyDistribution]
     ) -> Generator[None, None, None]:
-        """Pretend that looking up any distribution yields the given `distribution`."""
+        """Pretend that looking up any package yields the given `distribution`.
+
+        If `distribution = None`, we pretend that the package is not installed.
+        """
 
         def mock_distribution(name: str):
             if distribution is None:
@@ -81,7 +84,7 @@ class TestDependencyChecker(TestCase):
                 self.assertRaises(DependencyException, check_requirements)
 
     def test_checks_ignore_dev_dependencies(self) -> None:
-        """Bot generic and per-extra checks should ignore dev dependencies."""
+        """Both generic and per-extra checks should ignore dev dependencies."""
         with patch(
             "synapse.util.check_dependencies.metadata.requires",
             return_value=["dummypkg >= 1; extra == 'mypy'"],
@@ -142,3 +145,16 @@ class TestDependencyChecker(TestCase):
             with self.mock_installed_package(new_release_candidate):
                 # should not raise
                 check_requirements()
+
+    def test_setuptools_rust_ignored(self) -> None:
+        """Test a workaround for a `poetry build` problem. Reproduces #13926."""
+        with patch(
+            "synapse.util.check_dependencies.metadata.requires",
+            return_value=["setuptools_rust >= 1.3"],
+        ):
+            with self.mock_installed_package(None):
+                # should not raise, even if setuptools_rust is not installed
+                check_requirements()
+            with self.mock_installed_package(old):
+                # We also ignore old versions of setuptools_rust
+                check_requirements()