diff --git a/conan/api/subapi/workspace.py b/conan/api/subapi/workspace.py index 41ce0d67064..402f72fba1e 100644 --- a/conan/api/subapi/workspace.py +++ b/conan/api/subapi/workspace.py @@ -263,10 +263,11 @@ def _init_options(conanfile, options): def super_build_graph(self, deps_graph, profile_host, profile_build): order = [] - packages = self._ws.packages() + packages = self.packages() def find_folder(ref): - return next(p["path"] for p in packages if RecipeReference.loads(p["ref"]) == ref) + return next(os.path.dirname(os.path.relpath(p["path"], self._folder)) for p_ref, p in + packages.items() if p_ref == ref) for level in deps_graph.by_levels(): items = [item for item in level if item.recipe == "Editable"] diff --git a/test/integration/workspace/test_workspace.py b/test/integration/workspace/test_workspace.py index 271a3a5f9a7..00911c41b77 100644 --- a/test/integration/workspace/test_workspace.py +++ b/test/integration/workspace/test_workspace.py @@ -1117,6 +1117,11 @@ def test_workspace_defining_only_paths(): assert "liba/0.1@myuser/mychannel - Editable" in c.out assert "libb/0.1 - Editable" in c.out + c.run("workspace super-install") + assert "app1/0.1 - Editable" in c.out + assert "liba/0.1@myuser/mychannel - Editable" in c.out + assert "libb/0.1 - Editable" in c.out + def test_workspace_defining_duplicate_references(): """