Skip to content

Commit 1459d23

Browse files
committed
Include optional dependencies when mode changes, closes #12694
1 parent a6661e4 commit 1459d23

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

lib/mix/lib/mix/release.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,8 @@ defmodule Mix.Release do
285285
|> Enum.map(&{&1, new_mode})
286286

287287
seen = put_in(seen[app][:mode], new_mode)
288-
load_apps(apps, deps_apps, seen, otp_root, [], overrides)
288+
optional = Keyword.get(properties, :optional_applications, [])
289+
load_apps(apps, deps_apps, seen, otp_root, optional, overrides)
289290

290291
true ->
291292
seen

lib/mix/test/mix/release_test.exs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,48 @@ defmodule Mix.ReleaseTest do
853853
assert release.boot_scripts.start[:unknown] == nil
854854
end)
855855
end
856+
857+
test "are ignored even if mode changes", context do
858+
in_tmp(context.test, fn ->
859+
write_app!(
860+
"has_optional/ebin/has_optional.app",
861+
{:application, :has_optional,
862+
applications: [:kernel, :stdlib, :elixir, :unknown],
863+
optional_applications: [:unknown],
864+
description: ~c"has_optional",
865+
modules: [],
866+
vsn: ~c"1.0.0"}
867+
)
868+
869+
write_app!(
870+
"points_as_permanent/ebin/points_as_permanent.app",
871+
{:application, :points_as_permanent,
872+
applications: [:kernel, :stdlib, :elixir, :has_optional],
873+
optional_applications: [:unknown],
874+
description: ~c"points_as_permanent",
875+
modules: [],
876+
vsn: ~c"1.0.0"}
877+
)
878+
879+
write_app!(
880+
"points_as_temporary/ebin/points_as_temporary.app",
881+
{:application, :points_as_temporary,
882+
applications: [:kernel, :stdlib, :elixir, :has_optional],
883+
optional_applications: [:unknown],
884+
description: ~c"points_as_temporary",
885+
modules: [],
886+
vsn: ~c"1.0.0"}
887+
)
888+
889+
release =
890+
release(
891+
applications: [points_as_permanent: :permanent, points_as_temporary: :temporary]
892+
)
893+
894+
assert release.boot_scripts.start[:has_optional] == :permanent
895+
assert release.boot_scripts.start[:unknown] == nil
896+
end)
897+
end
856898
end
857899

858900
defp write_app!(path, app) do

0 commit comments

Comments
 (0)