Packages
excoveralls
0.16.1
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.1
0.17.0
0.16.1
0.16.0
0.15.3
0.15.2
0.15.1
0.15.0
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.2
0.11.1
0.11.0
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
Coverage report tool for Elixir with coveralls.io integration.
Current section
Files
Jump to
Current section
Files
lib/excoveralls/lcov.ex
defmodule ExCoveralls.Lcov do
@moduledoc """
Generate lcov output for results.
"""
@file_name "lcov.info"
@doc """
Provides an entry point for the module.
"""
def execute(stats, options \\ []) do
generate_lcov(stats, Enum.into(options, %{})) |> write_file(options[:output_dir])
ExCoveralls.Local.print_summary(stats)
end
def generate_lcov(stats, _options) do
lcov = Enum.map(stats, fn stat -> generate_lcov_file(stat) end) |> Enum.join("\n")
lcov <> "\n"
end
def generate_lcov_file(stat) do
da =
stat.coverage
|> Enum.with_index(1)
|> Enum.filter(fn {k, _v} -> k != nil end)
|> Enum.map(fn {k, v} -> {Integer.to_string(v), Integer.to_string(k)} end)
|> Enum.map(fn {line, count} -> "DA:" <> line <> "," <> count end)
foundlines =
stat.coverage
|> Enum.filter(fn v -> v != nil end)
lf = foundlines |> Enum.count()
lh = foundlines |> Enum.filter(fn v -> v > 0 end) |> Enum.count()
lines =
["TN:", "SF:" <> stat.name] ++
da ++
[
"LF:" <> Integer.to_string(lf),
"LH:" <> Integer.to_string(lh),
"end_of_record"
]
Enum.join(lines, "\n")
end
defp output_dir(output_dir) do
cond do
output_dir ->
output_dir
true ->
options = ExCoveralls.Settings.get_coverage_options()
case Map.fetch(options, "output_dir") do
{:ok, val} -> val
_ -> "cover/"
end
end
end
defp write_file(content, output_dir) do
file_path = output_dir(output_dir)
unless File.exists?(file_path) do
File.mkdir_p!(file_path)
end
File.write!(Path.expand(@file_name, file_path), content)
end
end