Skip to content

Commit 0f22c4f

Browse files
authored
Handle error when creating deltas (#2243)
Fixes this error: ``` CaseClauseError: no case clause matching: {:error, :delta_not_created} File "lib/nerves_hub/firmwares.ex", line 421, in NervesHub.Firmwares.create_firmware_delta/2 File "lib/nerves_hub/workers/firmware_delta_builder.ex", line 53, in NervesHub.Workers.FirmwareDeltaBuilder.maybe_create_firmware_delta/2 File "lib/nerves_hub/workers/firmware_delta_builder.ex", line 29, in NervesHub.Workers.FirmwareDeltaBuilder.perform/1 File "lib/oban/queue/executor.ex", line 145, in Oban.Queue.Executor.perform/1 File "lib/oban/queue/executor.ex", line 77, in Oban.Queue.Executor.call/1 File "lib/task/supervised.ex", line 101, in Task.Supervised.invoke_mfa/2 File "lib/task/supervised.ex", line 36, in Task.Supervised.reply/4 ```
1 parent 5f88e40 commit 0f22c4f

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

lib/nerves_hub/firmwares.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,10 @@ defmodule NervesHub.Firmwares do
481481
)
482482

483483
:ok
484+
485+
# We log the issue in the update tool, so no need to here
486+
{:error, :delta_not_created} ->
487+
:ok
484488
end
485489
end
486490

test/nerves_hub/firmwares_test.exs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,28 @@ defmodule NervesHub.FirmwaresTest do
318318
assert {:error, :not_found} =
319319
Firmwares.get_firmware_delta_by_source_and_target(source, target)
320320
end
321+
322+
test "update tool errors are handled", %{
323+
firmware: source,
324+
org_key: org_key,
325+
product: product
326+
} do
327+
target = Fixtures.firmware_fixture(org_key, product)
328+
source_url = "http://somefilestore.com/source.fw"
329+
target_url = "http://somefilestore.com/target.fw"
330+
331+
expect(UploadFile, :download_file, fn ^source -> {:ok, source_url} end)
332+
expect(UploadFile, :download_file, fn ^target -> {:ok, target_url} end)
333+
334+
expect(UpdateToolDefault, :create_firmware_delta_file, fn ^source_url, ^target_url ->
335+
{:error, :delta_not_created}
336+
end)
337+
338+
Firmwares.create_firmware_delta(source, target)
339+
340+
assert {:error, :not_found} =
341+
Firmwares.get_firmware_delta_by_source_and_target(source, target)
342+
end
321343
end
322344

323345
describe "filter/2" do

0 commit comments

Comments
 (0)