diff options
| author | sobolevn <mail@sobolevn.me> | 2023-06-29 16:13:14 +0300 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-06-30 08:27:15 +0200 |
| commit | 5820fc44854e421e4ebaaddb34d7109ff15e1148 (patch) | |
| tree | a8621e3243ab1cb9a892c60d047413d8563502cd | |
| parent | 953f29f700a60fc09b08b2c2270c12c447490c6a (diff) | |
Fixed #34687 -- Made Apps.clear_cache() clear get_swappable_settings_name() cache.
| -rw-r--r-- | AUTHORS | 1 | ||||
| -rw-r--r-- | django/apps/registry.py | 1 | ||||
| -rw-r--r-- | tests/apps/tests.py | 11 |
3 files changed, 13 insertions, 0 deletions
@@ -747,6 +747,7 @@ answer newbie questions, and generally made Django that much better: Nicolas Lara <nicolaslara@gmail.com> Nicolas Noé <nicolas@niconoe.eu> Nikita Marchant <nikita.marchant@gmail.com> + Nikita Sobolev <mail@sobolevn.me> Niran Babalola <niran@niran.org> Nis Jørgensen <nis@superlativ.dk> Nowell Strite <https://nowell.strite.org/> diff --git a/django/apps/registry.py b/django/apps/registry.py index 0683f3ad3c..92de6075fc 100644 --- a/django/apps/registry.py +++ b/django/apps/registry.py @@ -373,6 +373,7 @@ class Apps: This is mostly used in tests. """ + self.get_swappable_settings_name.cache_clear() # Call expire cache on each model. This will purge # the relation tree and the fields cache. self.get_models.cache_clear() diff --git a/tests/apps/tests.py b/tests/apps/tests.py index 9f989c5d9a..ecfb70162f 100644 --- a/tests/apps/tests.py +++ b/tests/apps/tests.py @@ -197,6 +197,17 @@ class AppsTests(SimpleTestCase): with self.assertRaises(ValueError): apps.get_model("admin_LogEntry") + @override_settings(INSTALLED_APPS=SOME_INSTALLED_APPS) + def test_clear_cache(self): + # Set cache. + self.assertIsNone(apps.get_swappable_settings_name("admin.LogEntry")) + apps.get_models() + + apps.clear_cache() + + self.assertEqual(apps.get_swappable_settings_name.cache_info().currsize, 0) + self.assertEqual(apps.get_models.cache_info().currsize, 0) + @override_settings(INSTALLED_APPS=["apps.apps.RelabeledAppsConfig"]) def test_relabeling(self): self.assertEqual(apps.get_app_config("relabeled").name, "apps") |
