• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

camatcode / basenji / ab50d6f56050b932de65618c18e8ebcab2472c56

27 Jul 2025 02:55PM UTC coverage: 81.44% (-0.3%) from 81.695%
ab50d6f56050b932de65618c18e8ebcab2472c56

Pull #72

github

camatcode
perf: introduce command/query telemetry
Pull Request #72: perf: introduce telemetry

83 of 96 new or added lines in 13 files covered. (86.46%)

2 existing lines in 1 file now uncovered.

1154 of 1417 relevant lines covered (81.44%)

492.93 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

93.33
/lib/basenji/reader/cbr_reader.ex
1
defmodule Basenji.Reader.CBRReader do
2
  @moduledoc false
3
  use Basenji.TelemetryHelpers
4

5
  import Basenji.Reader
6

7
  def format, do: :cbr
4✔
8
  def file_extensions, do: ["cbr"]
3,201✔
9
  def close(_any), do: :ok
4✔
10

11
  def get_magic_numbers, do: [%{offset: 0, magic: [0x52, 0x61, 0x72, 0x21, 0x1A, 0x07]}]
838✔
12

13
  def get_entries(cbr_file_path, _opts \\ []) do
14
    with {:ok, output} <- exec("unrar", ["lb", cbr_file_path]) do
840✔
15
      file_names = String.split(output, "\n")
840✔
16

17
      file_entries =
840✔
18
        file_names
19
        |> Enum.map(&%{file_name: &1})
3,360✔
20
        |> sort_file_names()
21
        |> reject_macos_preview()
22
        |> reject_directories()
23
        |> reject_non_image()
24

25
      {:ok, %{entries: file_entries}}
26
    end
27
  end
28

29
  def get_entry_stream!(cbr_file_path, entry) do
30
    create_resource(fn ->
69✔
31
      escaped_filename = entry[:file_name]
69✔
32

33
      with {:ok, output} <- exec("unrar", ["p", cbr_file_path, escaped_filename]) do
69✔
34
        [output |> :binary.bin_to_list()]
35
      end
36
    end)
37
  end
38

39
  def read(cbr_file_path, _opts \\ []) do
40
    telemetry_wrap [:basenji, :process], %{action: "read_cbr"} do
839✔
NEW
41
      with {:ok, %{entries: file_entries}} <- get_entries(cbr_file_path) do
×
42
        file_entries =
839✔
43
          file_entries
44
          |> Enum.map(fn entry ->
45
            entry
46
            |> Map.put(:stream_fun, fn -> get_entry_stream!(cbr_file_path, entry) end)
3,356✔
47
          end)
48

49
        {:ok, %{entries: file_entries}}
50
      end
51
    end
52
  end
53
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc