Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions vinca/distro.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,12 @@ def get_depends(
return set()

ignore_pkgs = set(ignore_pkgs or ())

if self.snapshot:
dependencies = self._get_snapshot_recursive_depends(pkg, ignore_pkgs)
self._depends_cache[cache_key] = set(dependencies)
return dependencies

dependencies = set()
visited = {pkg}
packages_to_check = {pkg}
Expand All @@ -182,11 +188,6 @@ def _get_direct_depends(self, pkg: str) -> set[str]:
if pkg in self._direct_depends_cache:
return set(self._direct_depends_cache[pkg])

if self.snapshot:
dependencies = self._get_snapshot_recursive_depends(pkg, ignore_pkgs)
self._depends_cache[cache_key] = set(dependencies)
return dependencies

# if pkg comes from additional_packages_snapshot, extract from its package.xml
if (
self.additional_packages_snapshot
Expand Down
5 changes: 5 additions & 0 deletions vinca/test_distro_dependencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ def test_dependency_walk_reuses_direct_dependencies_across_roots():
distro = Distro.__new__(Distro)
distro._depends_cache = {}
distro._direct_depends_cache = {}
distro.snapshot = None
distro.additional_packages_snapshot = None
distro.check_package = lambda name: name in graph
distro._walker = Mock()
Expand Down Expand Up @@ -41,6 +42,7 @@ def test_dependency_walk_honors_ignored_packages():
distro = Distro.__new__(Distro)
distro._depends_cache = {}
distro._direct_depends_cache = {}
distro.snapshot = None
distro.additional_packages_snapshot = None
distro.check_package = lambda name: name in graph
distro._walker = Mock()
Expand All @@ -58,6 +60,7 @@ def test_dependency_walk_excludes_root_in_cycles():
distro = Distro.__new__(Distro)
distro._depends_cache = {}
distro._direct_depends_cache = {}
distro.snapshot = None
distro.additional_packages_snapshot = None
distro.check_package = lambda name: name in graph
distro._get_direct_depends = lambda name: graph[name]
Expand All @@ -69,6 +72,7 @@ def test_dependency_walk_excludes_root_from_self_dependency():
distro = Distro.__new__(Distro)
distro._depends_cache = {}
distro._direct_depends_cache = {}
distro.snapshot = None
distro.additional_packages_snapshot = None
distro.check_package = lambda name: name == "a"
distro._get_direct_depends = lambda name: {"a"}
Expand All @@ -81,6 +85,7 @@ def test_dependency_walk_excludes_root_from_longer_cycle():
distro = Distro.__new__(Distro)
distro._depends_cache = {}
distro._direct_depends_cache = {}
distro.snapshot = None
distro.additional_packages_snapshot = None
distro.check_package = lambda name: name in graph
distro._get_direct_depends = lambda name: graph[name]
Expand Down
8 changes: 7 additions & 1 deletion vinca/test_snapshot_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ def make_snapshot_distro(monkeypatch):
distro._distribution_type = "ros2"
distro._additional_xml_cache = {}
distro._depends_cache = {}
distro._direct_depends_cache = {}
distro._distro = Mock()
distro._distro.get_release_package_xml.return_value = LIVE_PACKAGE_XML
distro._walker = Mock()
Expand Down Expand Up @@ -145,11 +146,16 @@ def test_empty_snapshot_keeps_live_rosdistro_behavior():
distro.additional_packages_snapshot = None
distro.build_packages = set()
distro._depends_cache = {}
distro._direct_depends_cache = {}
distro._distro = Mock()
distro._distro.release_packages = {"live_package": Mock()}
distro._distro.get_release_package_xml.return_value = LIVE_PACKAGE_XML
distro._walker = Mock()
distro._walker.get_recursive_depends.return_value = {"live_dependency"}
distro._walker.get_depends.side_effect = (
lambda package, dependency_type, ros_packages_only: (
{"live_dependency"} if dependency_type == "run" else set()
)
)

assert distro.check_package("live_package")
assert distro.get_release_package_xml("live_package") == LIVE_PACKAGE_XML
Expand Down