summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--requests_cache/backends/base.py17
-rw-r--r--tests/conftest.py10
-rw-r--r--tests/unit/test_base_cache.py58
-rw-r--r--tests/unit/test_patcher.py5
-rw-r--r--tests/unit/test_session.py3
5 files changed, 60 insertions, 33 deletions
diff --git a/requests_cache/backends/base.py b/requests_cache/backends/base.py
index 9814799..cd1dd44 100644
--- a/requests_cache/backends/base.py
+++ b/requests_cache/backends/base.py
@@ -247,7 +247,8 @@ class BaseCache:
def delete_url(self, url: str, method: str = 'GET', **kwargs):
warn(
- 'BaseCache.delete_url() is deprecated; please use .delete() instead', DeprecationWarning
+ 'BaseCache.delete_url() is deprecated; please use .delete() instead',
+ DeprecationWarning,
)
self.delete(requests=[Request(method, url, **kwargs)])
@@ -260,14 +261,15 @@ class BaseCache:
def has_url(self, url: str, method: str = 'GET', **kwargs) -> bool:
warn(
- 'BaseCache.has_url() is deprecated; please use .contains() instead', DeprecationWarning
+ 'BaseCache.has_url() is deprecated; please use .contains() instead',
+ DeprecationWarning,
)
return self.contains(request=Request(method, url, **kwargs))
def keys(self, check_expiry: bool = False) -> Iterator[str]:
warn(
- 'BaseCache.keys() is deprecated; please use .filter() or '
- 'BaseCache.responses.keys() instead',
+ 'BaseCache.keys() is deprecated; '
+ 'please use .filter() or BaseCache.responses.keys() instead',
DeprecationWarning,
)
yield from self.redirects.keys()
@@ -276,15 +278,16 @@ class BaseCache:
def response_count(self, check_expiry: bool = False) -> int:
warn(
- 'BaseCache.response_count() is deprecated; please use .filter() or '
- 'len(BaseCache.responses) instead',
+ 'BaseCache.response_count() is deprecated; '
+ 'please use .filter() or len(BaseCache.responses) instead',
DeprecationWarning,
)
return len(list(self.filter(expired=not check_expiry)))
def remove_expired_responses(self, expire_after: ExpirationTime = None):
warn(
- 'BaseCache.remove_expired_responses() is deprecated; please use .delete() instead',
+ 'BaseCache.remove_expired_responses() is deprecated; '
+ 'please use .delete(expired=True) instead',
DeprecationWarning,
)
self.delete(expired=True, invalid=True)
diff --git a/tests/conftest.py b/tests/conftest.py
index e09d7f1..84710ae 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -9,6 +9,8 @@ Note: The protocol ``http(s)+mock://`` helps :py:class:`requests_mock.Adapter` p
https://requests-mock.readthedocs.io/en/latest/adapter.html
"""
import os
+import warnings
+from contextlib import contextmanager
from datetime import datetime, timedelta
from functools import wraps
from importlib import import_module
@@ -278,5 +280,13 @@ def skip_missing_deps(module_name: str) -> pytest.Mark:
)
+@contextmanager
+def ignore_deprecation():
+ """Temporarily ilence deprecation warnings"""
+ with warnings.catch_warnings():
+ warnings.simplefilter('ignore', category=DeprecationWarning)
+ yield
+
+
# Some tests must disable url normalization to retain the custom `http+mock://` protocol
patch_normalize_url = patch('requests_cache.cache_keys.normalize_url', side_effect=lambda x, y: x)
diff --git a/tests/unit/test_base_cache.py b/tests/unit/test_base_cache.py
index 033a673..9ddbb4d 100644
--- a/tests/unit/test_base_cache.py
+++ b/tests/unit/test_base_cache.py
@@ -17,6 +17,7 @@ from tests.conftest import (
MOCKED_URL_HTTPS,
MOCKED_URL_JSON,
MOCKED_URL_REDIRECT,
+ ignore_deprecation,
patch_normalize_url,
)
@@ -226,8 +227,8 @@ def test_clear(mock_session):
mock_session.get(MOCKED_URL)
mock_session.get(MOCKED_URL_REDIRECT)
mock_session.cache.clear()
- assert not mock_session.cache.has_url(MOCKED_URL)
- assert not mock_session.cache.has_url(MOCKED_URL_REDIRECT)
+ assert not mock_session.cache.contains(request=Request('GET', MOCKED_URL))
+ assert not mock_session.cache.contains(request=Request('GET', MOCKED_URL_REDIRECT))
def test_save_response__manual(mock_session):
@@ -273,51 +274,59 @@ def test_urls__error(mock_session):
def test_has_url(mock_session):
mock_session.get(MOCKED_URL, params={'foo': 'bar'})
- assert mock_session.cache.has_url(MOCKED_URL, params={'foo': 'bar'})
- assert not mock_session.cache.has_url(MOCKED_URL)
+ with ignore_deprecation():
+ assert mock_session.cache.has_url(MOCKED_URL, params={'foo': 'bar'})
+ assert not mock_session.cache.has_url(MOCKED_URL)
def test_delete_url(mock_session):
mock_session.get(MOCKED_URL)
- mock_session.cache.delete_url(MOCKED_URL)
- assert not mock_session.cache.has_url(MOCKED_URL)
+ with ignore_deprecation():
+ mock_session.cache.delete_url(MOCKED_URL)
+ assert not mock_session.cache.has_url(MOCKED_URL)
def test_delete_url__request_args(mock_session):
mock_session.get(MOCKED_URL, params={'foo': 'bar'})
- mock_session.cache.delete_url(MOCKED_URL, params={'foo': 'bar'})
- assert not mock_session.cache.has_url(MOCKED_URL, params={'foo': 'bar'})
+ with ignore_deprecation():
+ mock_session.cache.delete_url(MOCKED_URL, params={'foo': 'bar'})
+ assert not mock_session.cache.has_url(MOCKED_URL, params={'foo': 'bar'})
def test_delete_url__nonexistent_response(mock_session):
"""Deleting a response that was either already deleted (or never added) should fail silently"""
- mock_session.cache.delete_url(MOCKED_URL)
+ with ignore_deprecation():
+ mock_session.cache.delete_url(MOCKED_URL)
- mock_session.get(MOCKED_URL)
- mock_session.cache.delete_url(MOCKED_URL)
- assert not mock_session.cache.has_url(MOCKED_URL)
- mock_session.cache.delete_url(MOCKED_URL) # Should fail silently
+ mock_session.get(MOCKED_URL)
+ mock_session.cache.delete_url(MOCKED_URL)
+
+ assert not mock_session.cache.has_url(MOCKED_URL)
+ mock_session.cache.delete_url(MOCKED_URL) # Should fail silently
def test_delete_urls(mock_session):
mock_session.get(MOCKED_URL)
- mock_session.cache.delete_urls([MOCKED_URL])
- assert not mock_session.cache.has_url(MOCKED_URL)
+ with ignore_deprecation():
+ mock_session.cache.delete_urls([MOCKED_URL])
+ assert not mock_session.cache.has_url(MOCKED_URL)
def test_keys(mock_session):
for url in [MOCKED_URL, MOCKED_URL_JSON, MOCKED_URL_REDIRECT]:
mock_session.get(url)
- all_keys = set(mock_session.cache.responses.keys()) | set(mock_session.cache.redirects.keys())
- assert set(mock_session.cache.keys()) == all_keys
+ with ignore_deprecation():
+ response_keys = set(mock_session.cache.responses.keys())
+ redirect_keys = set(mock_session.cache.redirects.keys())
+ assert set(mock_session.cache.keys()) == response_keys | redirect_keys
def test_remove_expired_responses(mock_session):
"""Test for backwards-compatibility"""
- with patch.object(mock_session.cache, 'delete') as mock_delete, patch.object(
- mock_session.cache, 'reset_expiration'
- ) as mock_reset:
+ with ignore_deprecation(), patch.object(
+ mock_session.cache, 'delete'
+ ) as mock_delete, patch.object(mock_session.cache, 'reset_expiration') as mock_reset:
mock_session.cache.remove_expired_responses(expire_after=1)
mock_delete.assert_called_once_with(expired=True, invalid=True)
mock_reset.assert_called_once_with(1)
@@ -335,14 +344,17 @@ def test_response_count(check_expiry, expected_count, mock_session):
mock_session.cache.responses['expired_response'] = CachedResponse(expires=YESTERDAY)
mock_session.cache.responses['invalid_response'] = InvalidResponse()
- assert mock_session.cache.response_count(check_expiry=check_expiry) == expected_count
+ with ignore_deprecation():
+ response_count = mock_session.cache.response_count(check_expiry=check_expiry)
+ assert response_count == expected_count
def test_values(mock_session):
for url in [MOCKED_URL, MOCKED_URL_JSON, MOCKED_URL_HTTPS]:
mock_session.get(url)
- responses = list(mock_session.cache.values())
+ with ignore_deprecation():
+ responses = list(mock_session.cache.values())
assert len(responses) == 3
assert all([isinstance(response, CachedResponse) for response in responses])
@@ -354,7 +366,7 @@ def test_values__with_invalid_responses(check_expiry, expected_count, mock_sessi
responses[1] = AttributeError
responses[2] = CachedResponse(expires=YESTERDAY, url='test')
- with patch.object(SQLiteDict, '__getitem__', side_effect=responses):
+ with ignore_deprecation(), patch.object(SQLiteDict, '__getitem__', side_effect=responses):
values = mock_session.cache.values(check_expiry=check_expiry)
assert len(list(values)) == expected_count
diff --git a/tests/unit/test_patcher.py b/tests/unit/test_patcher.py
index ceb2a4c..8977271 100644
--- a/tests/unit/test_patcher.py
+++ b/tests/unit/test_patcher.py
@@ -6,7 +6,7 @@ from requests.sessions import Session as OriginalSession
import requests_cache
from requests_cache import CachedSession
from requests_cache.backends import BaseCache, SQLiteCache
-from tests.conftest import CACHE_NAME
+from tests.conftest import CACHE_NAME, ignore_deprecation
def test_install_uninstall():
@@ -98,6 +98,7 @@ def test_delete__cache_not_installed(mock_delete):
@patch.object(BaseCache, 'delete')
def test_remove_expired_responses(mock_delete):
requests_cache.install_cache(backend='memory', expire_after=360)
- requests_cache.remove_expired_responses()
+ with ignore_deprecation():
+ requests_cache.remove_expired_responses()
assert mock_delete.called is True
requests_cache.uninstall_cache()
diff --git a/tests/unit/test_session.py b/tests/unit/test_session.py
index dda449a..60f2d42 100644
--- a/tests/unit/test_session.py
+++ b/tests/unit/test_session.py
@@ -29,6 +29,7 @@ from tests.conftest import (
MOCKED_URL_REDIRECT,
MOCKED_URL_REDIRECT_TARGET,
MOCKED_URL_VARY,
+ ignore_deprecation,
patch_normalize_url,
)
@@ -895,6 +896,6 @@ def test_request_force_refresh__prepared_request(mock_session):
def test_remove_expired_responses(mock_session):
- with patch.object(mock_session.cache, 'delete') as mock_delete:
+ with ignore_deprecation(), patch.object(mock_session.cache, 'delete') as mock_delete:
mock_session.remove_expired_responses()
mock_delete.assert_called_once_with(expired=True, invalid=True)