summaryrefslogtreecommitdiff
path: root/tests/unit/resolution_resolvelib/test_requirement.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/resolution_resolvelib/test_requirement.py')
-rw-r--r--tests/unit/resolution_resolvelib/test_requirement.py46
1 files changed, 32 insertions, 14 deletions
diff --git a/tests/unit/resolution_resolvelib/test_requirement.py b/tests/unit/resolution_resolvelib/test_requirement.py
index 1f7b0c53d..6864e70ea 100644
--- a/tests/unit/resolution_resolvelib/test_requirement.py
+++ b/tests/unit/resolution_resolvelib/test_requirement.py
@@ -1,8 +1,14 @@
+import os
+from pathlib import Path
+from typing import Iterator, List, Tuple
+
import pytest
from pip._vendor.resolvelib import BaseReporter, Resolver
-from pip._internal.resolution.resolvelib.base import Candidate, Constraint
-from pip._internal.utils.urls import path_to_url
+from pip._internal.resolution.resolvelib.base import Candidate, Constraint, Requirement
+from pip._internal.resolution.resolvelib.factory import Factory
+from pip._internal.resolution.resolvelib.provider import PipProvider
+from tests.lib import TestData
# NOTE: All tests are prefixed `test_rlr` (for "test resolvelib resolver").
# This helps select just these tests using pytest's `-k` option, and
@@ -18,12 +24,15 @@ from pip._internal.utils.urls import path_to_url
@pytest.fixture
-def test_cases(data):
- def data_file(name):
+def test_cases(data: TestData) -> Iterator[List[Tuple[str, str, int]]]:
+ def _data_file(name: str) -> Path:
return data.packages.joinpath(name)
- def data_url(name):
- return path_to_url(data_file(name))
+ def data_file(name: str) -> str:
+ return os.fspath(_data_file(name))
+
+ def data_url(name: str) -> str:
+ return _data_file(name).as_uri()
test_cases = [
# requirement, name, matches
@@ -47,17 +56,23 @@ def test_cases(data):
yield test_cases
-def test_new_resolver_requirement_has_name(test_cases, factory):
+def test_new_resolver_requirement_has_name(
+ test_cases: List[Tuple[str, str, int]], factory: Factory
+) -> None:
"""All requirements should have a name"""
for spec, name, _ in test_cases:
req = factory.make_requirement_from_spec(spec, comes_from=None)
+ assert req is not None
assert req.name == name
-def test_new_resolver_correct_number_of_matches(test_cases, factory):
+def test_new_resolver_correct_number_of_matches(
+ test_cases: List[Tuple[str, str, int]], factory: Factory
+) -> None:
"""Requirements should return the correct number of candidates"""
for spec, _, match_count in test_cases:
req = factory.make_requirement_from_spec(spec, comes_from=None)
+ assert req is not None
matches = factory.find_candidates(
req.name,
{req.name: [req]},
@@ -68,11 +83,13 @@ def test_new_resolver_correct_number_of_matches(test_cases, factory):
assert sum(1 for _ in matches) == match_count
-def test_new_resolver_candidates_match_requirement(test_cases, factory):
- """Candidates returned from find_candidates should satisfy the requirement
- """
+def test_new_resolver_candidates_match_requirement(
+ test_cases: List[Tuple[str, str, int]], factory: Factory
+) -> None:
+ """Candidates returned from find_candidates should satisfy the requirement"""
for spec, _, _ in test_cases:
req = factory.make_requirement_from_spec(spec, comes_from=None)
+ assert req is not None
candidates = factory.find_candidates(
req.name,
{req.name: [req]},
@@ -85,9 +102,10 @@ def test_new_resolver_candidates_match_requirement(test_cases, factory):
assert req.is_satisfied_by(c)
-def test_new_resolver_full_resolve(factory, provider):
+def test_new_resolver_full_resolve(factory: Factory, provider: PipProvider) -> None:
"""A very basic full resolve"""
req = factory.make_requirement_from_spec("simplewheel", comes_from=None)
- r = Resolver(provider, BaseReporter())
+ assert req is not None
+ r: Resolver[Requirement, Candidate, str] = Resolver(provider, BaseReporter())
result = r.resolve([req])
- assert set(result.mapping.keys()) == {'simplewheel'}
+ assert set(result.mapping.keys()) == {"simplewheel"}