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

camatcode / basenji / 510183623a1afcec86a81c40dc2c479a483e7ff7

03 Aug 2025 05:27PM UTC coverage: 84.181% (-0.01%) from 84.192%
510183623a1afcec86a81c40dc2c479a483e7ff7

Pull #85

github

camatcode
refactor: Reader behaviour
Pull Request #85: refactor: Reader behaviour

59 of 62 new or added lines in 6 files covered. (95.16%)

13 existing lines in 6 files now uncovered.

1208 of 1435 relevant lines covered (84.18%)

491.41 hits per line

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

92.86
/lib/basenji/reader/cb7_reader.ex
1
defmodule Basenji.Reader.CB7Reader do
2
  @moduledoc false
3

4
  @behaviour Basenji.Reader
5

6
  use Basenji.TelemetryHelpers
7

8
  alias Basenji.Reader
9

10
  @impl Reader
11
  def format, do: :cb7
5✔
12

13
  @impl Reader
14
  def file_extensions, do: ["cb7"]
2,383✔
15

16
  @impl Reader
17
  def magic_numbers, do: [%{offset: 0, magic: [0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C]}]
782✔
18

19
  @impl Reader
20
  def get_entries(cbz_file_path, _opts \\ []) do
21
    with {:ok, output} <- Reader.exec("7z", ["l", "-ba", cbz_file_path]) do
786✔
22
      file_names =
786✔
23
        output
24
        |> String.split("\n")
25
        |> Enum.map(&String.slice(&1, 53..-1//1))
3,144✔
26

27
      file_entries =
786✔
28
        file_names
29
        |> Enum.map(&%{file_name: &1})
3,144✔
30
        |> Reader.sort_and_reject()
31

32
      {:ok, %{entries: file_entries}}
33
    end
34
  end
35

36
  def read(cbz_file_path, _opts \\ []) do
37
    meter_duration [:basenji, :process], "read_cb7" do
779✔
UNCOV
38
      with {:ok, %{entries: file_entries}} <- get_entries(cbz_file_path) do
×
39
        file_entries =
779✔
40
          file_entries
41
          |> Enum.map(&Map.put(&1, :stream_fun, fn -> get_entry_stream!(cbz_file_path, &1) end))
3,116✔
42

43
        {:ok, %{entries: file_entries}}
44
      end
45
    end
46
  end
47

48
  @impl Reader
49
  def get_entry_stream!(cbz_file_path, entry),
50
    do: Reader.create_resource("7z", ["x", "-so", cbz_file_path, entry[:file_name]])
86✔
51

52
  @impl Reader
53
  def close(_), do: :ok
5✔
54
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