Skip to content

Commit d3d1833

Browse files
josevalimJosé Valim
authored andcommitted
Properly populate top_level field of deps (#7931)
Closes #7930 Signed-off-by: José Valim <[email protected]>
1 parent 7d42771 commit d3d1833

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

lib/mix/lib/mix/dep.ex

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,12 @@ defmodule Mix.Dep do
123123

124124
defp load_and_cache(config, _top, bottom, _env) do
125125
{_, deps} = Mix.ProjectStack.read_cache({:cached_deps, bottom})
126-
apps = [Keyword.fetch!(config, :app)]
127-
seen = populate_seen(MapSet.new(), apps)
128-
get_deps(deps, tl(Enum.uniq(get_children(deps, seen, apps))))
126+
app = Keyword.fetch!(config, :app)
127+
top_level = for dep <- deps, dep.app == app, child <- dep.deps, do: child.app
128+
129+
seen = populate_seen(MapSet.new(), [app])
130+
children = get_deps(deps, tl(Enum.uniq(get_children(deps, seen, [app]))))
131+
Enum.map(children, &%{&1 | top_level: &1.app in top_level})
129132
end
130133

131134
defp read_cached_deps(project, env) do

lib/mix/test/mix/dep_test.exs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,27 @@ defmodule Mix.DepTest do
488488
end)
489489
end
490490

491+
test "nested deps with no overrides" do
492+
# deps_repo brings git_repo but it is overriden
493+
deps = [
494+
{:deps_repo, "0.1.0", path: "custom/deps_repo"}
495+
]
496+
497+
with_deps(deps, fn ->
498+
in_fixture("deps_status", fn ->
499+
File.mkdir_p!("custom/deps_repo/lib")
500+
501+
File.write!("custom/deps_repo/lib/a.ex", """
502+
# Check that the child dependency is top_level
503+
[%Mix.Dep{app: :git_repo, top_level: true}] = Mix.Dep.cached()
504+
""")
505+
506+
Mix.Tasks.Deps.Get.run([])
507+
Mix.Tasks.Deps.Compile.run([])
508+
end)
509+
end)
510+
end
511+
491512
test "nested deps with overrides" do
492513
# deps_repo brings git_repo but it is overriden
493514
deps = [

0 commit comments

Comments
 (0)