diff --git a/src/crawlee/_service_locator.py b/src/crawlee/_service_locator.py index c17a3a95c7..b7c8d31f59 100644 --- a/src/crawlee/_service_locator.py +++ b/src/crawlee/_service_locator.py @@ -35,6 +35,12 @@ def __init__( self._event_manager = event_manager self._storage_client = storage_client + def reset(self) -> None: + """Reset the service locator.""" + self._configuration = None + self._event_manager = None + self._storage_client = None + def get_configuration(self) -> Configuration: """Get the configuration.""" if self._configuration is None: diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py index 77d4f1a4e6..5edf55bc7a 100644 --- a/tests/unit/conftest.py +++ b/tests/unit/conftest.py @@ -64,9 +64,7 @@ def _prepare_test_env() -> None: monkeypatch.setenv('CRAWLEE_STORAGE_DIR', str(tmp_path)) # Reset the services in the service locator. - service_locator._configuration = None - service_locator._event_manager = None - service_locator._storage_client = None + service_locator.reset() service_locator.storage_instance_manager.clear_cache() # Verify that the test environment was set up correctly. diff --git a/tests/unit/test_service_locator.py b/tests/unit/test_service_locator.py index b9623c699b..609f528770 100644 --- a/tests/unit/test_service_locator.py +++ b/tests/unit/test_service_locator.py @@ -95,3 +95,15 @@ def test_storage_client_conflict() -> None: with pytest.raises(ServiceConflictError, match=r'StorageClient is already in use.'): service_locator.set_storage_client(custom_storage_client) + + +def test_storage_client_overwrite_possible_after_reset() -> None: + service_locator.set_event_manager(LocalEventManager()) + service_locator.set_configuration(Configuration()) + service_locator.set_storage_client(MemoryStorageClient()) + + service_locator.reset() + + service_locator.set_event_manager(LocalEventManager()) + service_locator.set_configuration(Configuration()) + service_locator.set_storage_client(MemoryStorageClient())