Skip to content

Commit 43a37fc

Browse files
committed
fix: address code review feedback on test quality
1 parent 7d87de0 commit 43a37fc

1 file changed

Lines changed: 49 additions & 9 deletions

File tree

tests/test_helpers.py

Lines changed: 49 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)