Skip to content

Commit 9f13f00

Browse files
authored
mock unreliable docker hub API for tests (#6539)
1 parent af2e75d commit 9f13f00

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

lib/mix/tasks/phx.gen.release.ex

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -347,10 +347,15 @@ defmodule Mix.Tasks.Phx.Gen.Release do
347347
]
348348
]
349349

350-
case :httpc.request(:get, {url, []}, http_options, body_format: :binary) do
351-
{:ok, {{_, 200, _}, _headers, body}} -> body
352-
other -> raise "couldn't fetch #{url}: #{inspect(other)}"
353-
end
350+
http_client =
351+
Process.get({__MODULE__, :http_client}, fn url ->
352+
case :httpc.request(:get, {url, []}, http_options, body_format: :binary) do
353+
{:ok, {{_, 200, _}, _headers, body}} -> body
354+
other -> raise "couldn't fetch #{url}: #{inspect(other)}"
355+
end
356+
end)
357+
358+
http_client.(url)
354359
end
355360

356361
defp protocol_versions do

test/mix/tasks/phx.gen.release_test.exs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,16 @@ defmodule Mix.Tasks.Phx.Gen.ReleaseTest do
99

1010
setup do
1111
Mix.Task.clear()
12+
13+
Process.put({Mix.Tasks.Phx.Gen.Release, :http_client}, fn url ->
14+
case to_string(url) do
15+
"https://hub.docker.com/v2/namespaces/hexpm/repositories/elixir/tags?" <> _ ->
16+
Phoenix.json_library().encode!(%{
17+
results: [%{name: "1.18.4-erlang-25.3.2.17-debian-trixie-20251117-slim"}]
18+
})
19+
end
20+
end)
21+
1222
:ok
1323
end
1424

@@ -59,9 +69,9 @@ defmodule Mix.Tasks.Phx.Gen.ReleaseTest do
5969
assert file =~ ~S|PHX_SERVER=true exec ./phoenix start|
6070
end)
6171

62-
refute_file "lib/phoenix/release.ex"
63-
refute_file "rel/overlays/bin/migrate"
64-
refute_file "rel/overlays/bin/migrate.bat"
72+
refute_file("lib/phoenix/release.ex")
73+
refute_file("rel/overlays/bin/migrate")
74+
refute_file("rel/overlays/bin/migrate.bat")
6575
refute_file("Dockerfile")
6676
refute_file(".dockerignore")
6777

@@ -86,7 +96,9 @@ defmodule Mix.Tasks.Phx.Gen.ReleaseTest do
8696
end)
8797

8898
assert_file("Dockerfile", fn file ->
89-
assert file =~ ~S|COPY --from=builder --chown=nobody:root /app/_build/${MIX_ENV}/rel/phoenix ./|
99+
assert file =~
100+
~S|COPY --from=builder --chown=nobody:root /app/_build/${MIX_ENV}/rel/phoenix ./|
101+
90102
assert file =~ ~S|CMD ["/app/bin/server"]|
91103
end)
92104

0 commit comments

Comments
 (0)