File tree Expand file tree Collapse file tree 2 files changed +27
-3
lines changed
Expand file tree Collapse file tree 2 files changed +27
-3
lines changed Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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 = [
You can’t perform that action at this time.
0 commit comments