Skip to content

Commit ff61a74

Browse files
author
José Valim
committed
Raise on unknown dependencies for deps.get and deps.update
1 parent 39db5a1 commit ff61a74

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

lib/mix/lib/mix/deps.ex

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,10 @@ defmodule Mix.Deps do
120120
121121
# Now we validate the given atoms
122122
index = Mix.Dep.__record__(:index, :app)
123+
123124
Enum.each apps, fn(app) ->
124-
unless List.keyfind(deps, app, index) do
125-
Mix.shell.info "unknown dependency #{app} for env #{Mix.env}"
125+
unless List.keyfind(all_deps, app, index) do
126+
raise Mix.Error, message: "unknown dependency #{app} for environment #{Mix.env}"
126127
end
127128
end
128129

lib/mix/lib/mix/deps/fetcher.ex

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,17 @@ defmodule Mix.Deps.Fetcher do
1313
Fetches all dependencies.
1414
"""
1515
def all(old_lock, new_lock, opts) do
16-
do_finalize Mix.Deps.unloaded({ [], new_lock }, &do_fetch/2), old_lock, opts
16+
{ apps, _deps } = do_finalize Mix.Deps.unloaded({ [], new_lock }, &do_fetch/2), old_lock, opts
17+
apps
1718
end
1819

1920
@doc """
2021
Fetches the dependencies with the given names and their children recursively.
2122
"""
2223
def by_name(names, old_lock, new_lock, opts) do
23-
do_finalize Mix.Deps.unloaded_by_name(names, { [], new_lock }, &do_fetch/2), old_lock, opts
24+
{ apps, deps } = do_finalize Mix.Deps.unloaded_by_name(names, { [], new_lock }, &do_fetch/2), old_lock, opts
25+
Mix.Deps.loaded_by_name(names, deps) # Check all given dependencies are loaded or fail
26+
apps
2427
end
2528

2629
defp do_fetch(dep, { acc, lock }) do
@@ -81,7 +84,7 @@ defmodule Mix.Deps.Fetcher do
8184
Mix.Deps.Lock.write(lock)
8285

8386
do_compile(deps, opts)
84-
apps
87+
{ apps, all_deps }
8588
end
8689

8790
defp do_compile(deps, opts) do

lib/mix/test/mix/tasks/deps_test.exs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ defmodule Mix.Tasks.DepsTest do
199199
end
200200
end
201201

202-
test "does not choke when another environment is compiled first than dep" do
202+
test "does not choke when another environment is compiled first than dev" do
203203
Mix.Project.push PerEnvironemtDepsApp
204204
Mix.env(:test)
205205

@@ -365,6 +365,16 @@ defmodule Mix.Tasks.DepsTest do
365365
end
366366
end
367367

368+
test "fails on missing dependencies" do
369+
Mix.Project.push SuccessfulDepsApp
370+
371+
in_fixture "deps_status", fn ->
372+
assert_raise Mix.Error, %r/unknown dependency invalid for environment dev/, fn ->
373+
Mix.Tasks.Deps.Get.run ["invalid"]
374+
end
375+
end
376+
end
377+
368378
test "works with nested dependencies" do
369379
Mix.Project.push NestedDepsApp
370380

0 commit comments

Comments
 (0)