summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@plataformatec.com.br>2018-04-18 08:35:25 +0200
committerJosé Valim <jose.valim@plataformatec.com.br>2018-04-18 08:59:55 +0200
commit2ebf14c431a4ef037c0fc9713a94c8bad7030243 (patch)
tree19b9e205090114e4aefb78344d1381054e3a4b8b /lib
parent78e34a1ce5c16c58ca2bc9a9286a8374913bb3ce (diff)
downloadelixir-2ebf14c431a4ef037c0fc9713a94c8bad7030243.tar.gz
Do not include extra_applications in generated compile.app
See #7562
Diffstat (limited to 'lib')
-rw-r--r--lib/mix/lib/mix/tasks/compile.app.ex35
-rw-r--r--lib/mix/test/mix/tasks/compile.app_test.exs1
2 files changed, 20 insertions, 16 deletions
diff --git a/lib/mix/lib/mix/tasks/compile.app.ex b/lib/mix/lib/mix/tasks/compile.app.ex
index dfef7ac83..edd915fc5 100644
--- a/lib/mix/lib/mix/tasks/compile.app.ex
+++ b/lib/mix/lib/mix/tasks/compile.app.ex
@@ -201,19 +201,17 @@ defmodule Mix.Tasks.Compile.App do
Enum.map(beams, &(&1 |> Path.basename() |> Path.rootname(".beam") |> String.to_atom()))
end
- defp language_app(config) do
- case Keyword.fetch(config, :language) do
- {:ok, :elixir} -> [:elixir]
- {:ok, :erlang} -> []
- :error -> [:elixir]
- end
- end
-
defp ensure_correct_properties(properties, config) do
- properties
- |> validate_properties!
- |> Keyword.put_new_lazy(:applications, fn -> apps_from_prod_non_optional_deps(properties) end)
- |> Keyword.update!(:applications, fn apps -> normalize_apps(apps, properties, config) end)
+ validate_properties!(properties)
+ {extra, properties} = Keyword.pop(properties, :extra_applications, [])
+
+ apps =
+ properties
+ |> Keyword.get(:applications)
+ |> Kernel.||(apps_from_prod_non_optional_deps(properties))
+ |> normalize_apps(extra, config)
+
+ Keyword.put(properties, :applications, apps)
end
defp validate_properties!(properties) do
@@ -313,8 +311,6 @@ defmodule Mix.Tasks.Compile.App do
_ ->
:ok
end)
-
- properties
end
defp apps_from_prod_non_optional_deps(properties) do
@@ -328,8 +324,15 @@ defmodule Mix.Tasks.Compile.App do
do: app
end
- defp normalize_apps(apps, properties, config) do
- extra = Keyword.get(properties, :extra_applications, [])
+ defp normalize_apps(apps, extra, config) do
Enum.uniq([:kernel, :stdlib] ++ language_app(config) ++ extra ++ apps)
end
+
+ defp language_app(config) do
+ case Keyword.fetch(config, :language) do
+ {:ok, :elixir} -> [:elixir]
+ {:ok, :erlang} -> []
+ :error -> [:elixir]
+ end
+ end
end
diff --git a/lib/mix/test/mix/tasks/compile.app_test.exs b/lib/mix/test/mix/tasks/compile.app_test.exs
index b1aa60bcb..618b5af84 100644
--- a/lib/mix/test/mix/tasks/compile.app_test.exs
+++ b/lib/mix/test/mix/tasks/compile.app_test.exs
@@ -85,6 +85,7 @@ defmodule Mix.Tasks.Compile.AppTest do
assert properties[:maxT] == :infinity
assert properties[:applications] == [:kernel, :stdlib, :elixir, :logger, :example_app]
assert properties[:description] == 'Some UTF-8 description (uma descrição em UTF-8)'
+ refute Keyword.has_key?(properties, :extra_applications)
end)
end