@@ -83,6 +83,7 @@ def test_returns_optional_dependency(self) -> None:
8383 def test_returns_dependency_with_groups (self ) -> None :
8484 dep = get_dependency ("foo" , ">=1.0" , groups = ["dev" ])
8585 assert dep .in_extras == []
86+ assert "dev" in dep .groups
8687
8788 def test_returns_dependency_allowing_prereleases (self ) -> None :
8889 dep = get_dependency ("foo" , ">=1.0" , allows_prereleases = True )
@@ -268,6 +269,17 @@ def test_find_packages_returns_matching_packages(self) -> None:
268269 assert len (result ) == 1
269270 assert result [0 ].name == "foo"
270271
272+ def test_find_packages_filters_by_version_constraint (self ) -> None :
273+ repo = TestRepository ("test" )
274+ repo .add_package (get_package ("foo" , "1.0.0" ))
275+ repo .add_package (get_package ("foo" , "1.1.0" ))
276+ repo .add_package (get_package ("foo" , "2.0.0" ))
277+
278+ dep = get_dependency ("foo" , ">=1.0,<2.0" )
279+ result = repo .find_packages (dep )
280+ versions = sorted (p .version .text for p in result )
281+ assert versions == ["1.0.0" , "1.1.0" ]
282+
271283 def test_find_packages_raises_when_not_found (self ) -> None :
272284 repo = TestRepository ("test" )
273285
@@ -497,15 +509,43 @@ def set_password(self, service: str, username: str, password: str) -> None:
497509 def delete_password (self , service : str , username : str ) -> None :
498510 pass
499511
500- backend = DummyBackend ()
501-
502- # Populate the cache before calling set_keyring_backend
503- PoetryKeyring .is_available ()
504-
505- from tests .helpers import set_keyring_backend
506-
507- set_keyring_backend (backend )
508- assert keyring .get_keyring () is backend
512+ # Save original keyring state so we can restore it
513+ original_backend = keyring .get_keyring ()
514+
515+ try :
516+ backend = DummyBackend ()
517+
518+ # Populate the cache before calling set_keyring_backend
519+ PoetryKeyring .is_available ()
520+ cache_before = PoetryKeyring .is_available .cache_info ()
521+ assert cache_before .currsize > 0 , "Cache should be populated"
522+
523+ from tests .helpers import set_keyring_backend
524+
525+ set_keyring_backend (backend )
526+
527+ # Verify the global backend was set
528+ assert keyring .get_keyring () is backend
529+
530+ # Verify the cache was cleared by set_keyring_backend
531+ cache_after_clear = PoetryKeyring .is_available .cache_info ()
532+ assert cache_after_clear .currsize == 0 , (
533+ "Cache should be empty after set_keyring_backend"
534+ )
535+
536+ # Verify cache is recomputed on the next call
537+ PoetryKeyring .is_available ()
538+ cache_recomputed = PoetryKeyring .is_available .cache_info ()
539+ assert cache_recomputed .misses > 0 , (
540+ "Cache should have a miss after recomputation"
541+ )
542+ assert cache_recomputed .currsize > 0 , (
543+ "Cache should be repopulated after calling is_available"
544+ )
545+ finally :
546+ # Restore original keyring state to avoid leaking into other tests
547+ PoetryKeyring .is_available .cache_clear ()
548+ keyring .set_keyring (original_backend )
509549
510550
511551# --- pbs_installer_supported_arch ---
0 commit comments