diff --git a/radicale/tests/custom/storage.py b/radicale/tests/custom/storage_simple_sync.py similarity index 75% rename from radicale/tests/custom/storage.py rename to radicale/tests/custom/storage_simple_sync.py index bfcc6e4a..3046a829 100644 --- a/radicale/tests/custom/storage.py +++ b/radicale/tests/custom/storage_simple_sync.py @@ -18,12 +18,17 @@ """ Custom storage backend. -Copy of filesystem storage backend for testing +Copy of multifilesystem storage backend that uses the default ``sync`` +implementation for testing. """ -from radicale.storage import multifilesystem +from radicale.storage import BaseCollection, multifilesystem + + +class Collection(multifilesystem.Collection): + sync = BaseCollection.sync class Storage(multifilesystem.Storage): - pass + _collection_class = Collection diff --git a/radicale/tests/test_base.py b/radicale/tests/test_base.py index f202242b..51dd2e59 100644 --- a/radicale/tests/test_base.py +++ b/radicale/tests/test_base.py @@ -1183,7 +1183,7 @@ class BaseRequestsMixIn: new_sync_token, xml = self._report_sync_token(calendar_path, sync_token) if not self.full_sync_token_support and not new_sync_token: - pytest.skip("storage backend does not support sync-token") + return assert sync_token == new_sync_token assert xml.find("{DAV:}response") is None @@ -1199,7 +1199,7 @@ class BaseRequestsMixIn: assert status == 201 sync_token, xml = self._report_sync_token(calendar_path, sync_token) if not self.full_sync_token_support and not sync_token: - pytest.skip("storage backend does not support sync-token") + return assert xml.find("{DAV:}response") is not None assert xml.find("{DAV:}response/{DAV:}status") is None @@ -1217,7 +1217,7 @@ class BaseRequestsMixIn: assert status == 200 sync_token, xml = self._report_sync_token(calendar_path, sync_token) if not self.full_sync_token_support and not sync_token: - pytest.skip("storage backend does not support sync-token") + return assert "404" in xml.find("{DAV:}response/{DAV:}status").text def test_report_sync_collection_create_delete(self): @@ -1234,7 +1234,7 @@ class BaseRequestsMixIn: assert status == 200 sync_token, xml = self._report_sync_token(calendar_path, sync_token) if not self.full_sync_token_support and not sync_token: - pytest.skip("storage backend does not support sync-token") + return assert "404" in xml.find("{DAV:}response/{DAV:}status").text def test_report_sync_collection_modify_undo(self): @@ -1254,7 +1254,7 @@ class BaseRequestsMixIn: assert status == 201 sync_token, xml = self._report_sync_token(calendar_path, sync_token) if not self.full_sync_token_support and not sync_token: - pytest.skip("storage backend does not support sync-token") + return assert xml.find("{DAV:}response") is not None assert xml.find("{DAV:}response/{DAV:}status") is None @@ -1274,7 +1274,7 @@ class BaseRequestsMixIn: assert status == 201 sync_token, xml = self._report_sync_token(calendar_path, sync_token) if not self.full_sync_token_support and not sync_token: - pytest.skip("storage backend does not support sync-token") + return for response in xml.findall("{DAV:}response"): if response.find("{DAV:}status") is None: assert response.find("{DAV:}href").text == event2_path @@ -1301,7 +1301,7 @@ class BaseRequestsMixIn: assert status == 201 sync_token, xml = self._report_sync_token(calendar_path, sync_token) if not self.full_sync_token_support and not sync_token: - pytest.skip("storage backend does not support sync-token") + return created = deleted = 0 for response in xml.findall("{DAV:}response"): if response.find("{DAV:}status") is None: @@ -1345,7 +1345,7 @@ class BaseRequestsMixIn: new_sync_token, xml = self._report_sync_token(calendar_path, sync_token) if not self.full_sync_token_support and not new_sync_token: - pytest.skip("storage backend does not support sync-token") + return assert sync_token == new_sync_token def test_calendar_getcontenttype(self): @@ -1624,8 +1624,13 @@ class TestMultiFileSystem(BaseFileSystemTest, BaseRequestsMixIn): class TestCustomStorageSystem(BaseFileSystemTest): """Test custom backend loading.""" - storage_type = "tests.custom.storage" + storage_type = "tests.custom.storage_simple_sync" + full_sync_token_support = False + _report_sync_token = BaseRequestsMixIn._report_sync_token + test_root = BaseRequestsMixIn.test_root - def test_root(self): - """A simple test to verify that the custom backend works.""" - BaseRequestsMixIn.test_root(self) + +# include tests related to sync token +for s in dir(BaseRequestsMixIn): + if s.startswith("test_") and ("_sync_" in s or s.endswith("_sync")): + setattr(TestCustomStorageSystem, s, getattr(BaseRequestsMixIn, s))