1212from cpp_dev .common .version import SemanticVersion
1313from cpp_dev .dependency .conan .provider import ConanDependencyProvider
1414from cpp_dev .dependency .conan .types import ConanPackageReference
15+ from cpp_dev .dependency .provider import DependencyIdentifier
16+ from cpp_dev .dependency .specifier import DependencySpecifier
1517from tests .cpp_dev .dependency .conan .utils .env import (ConanTestEnv ,
1618 ConanTestPackage ,
1719 create_conan_test_env )
2022@pytest .fixture
2123def conan_test_environment (tmp_path : Path , unused_http_port : int ) -> Generator [ConanTestEnv ]:
2224 TEST_PACKAGES = [
25+ ConanTestPackage (
26+ ref = ConanPackageReference ("dep/1.0.0@official/cppdev" ),
27+ dependencies = [],
28+ cpp_standard = "c++17" ,
29+ ),
2330 ConanTestPackage (
2431 ref = ConanPackageReference ("cpd/1.0.0@official/cppdev" ),
2532 dependencies = [],
@@ -32,7 +39,9 @@ def conan_test_environment(tmp_path: Path, unused_http_port: int) -> Generator[C
3239 ),
3340 ConanTestPackage (
3441 ref = ConanPackageReference ("cpd/3.0.0@official/cppdev" ),
35- dependencies = [],
42+ dependencies = [
43+ ConanPackageReference ("dep/1.0.0@official/cppdev" )
44+ ],
3645 cpp_standard = "c++17" ,
3746 ),
3847 ]
@@ -41,8 +50,19 @@ def conan_test_environment(tmp_path: Path, unused_http_port: int) -> Generator[C
4150
4251
4352def test_get_available_versions (conan_test_environment : ConanTestEnv ) -> None :
44- provider = ConanDependencyProvider (conan_test_environment .conan_home_dir )
53+ provider = ConanDependencyProvider (conan_test_environment .conan_home_dir , conan_test_environment . profile )
4554 assert provider .fetch_versions ("official" , "cpd" ) == [
4655 SemanticVersion ("3.0.0" ),
4756 SemanticVersion ("1.0.0" ),
48- ]
57+ ]
58+
59+
60+ def test_collect_dependency_hull (conan_test_environment : ConanTestEnv ) -> None :
61+ provider = ConanDependencyProvider (conan_test_environment .conan_home_dir , conan_test_environment .profile )
62+ deps = [
63+ DependencySpecifier ("official/cpd[>=3.0.0]" ),
64+ ]
65+ dependencies = provider .collect_dependency_hull (deps )
66+ assert len (dependencies ) == 2
67+ assert dependencies [0 ].id == DependencyIdentifier ("official/cpd/3.0.0" )
68+ assert dependencies [1 ].id == DependencyIdentifier ("official/dep/1.0.0" )
0 commit comments