Packages
excoveralls
0.15.0
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.ex
defmodule ExCoveralls do
@moduledoc """
Provides the entry point for coverage calculation and output.
This module method is called by Mix.Tasks.Test
"""
alias ExCoveralls.Stats
alias ExCoveralls.Cover
alias ExCoveralls.ConfServer
alias ExCoveralls.StatServer
alias ExCoveralls.Travis
alias ExCoveralls.Github
alias ExCoveralls.Gitlab
alias ExCoveralls.Circle
alias ExCoveralls.Semaphore
alias ExCoveralls.Drone
alias ExCoveralls.Local
alias ExCoveralls.Html
alias ExCoveralls.Json
alias ExCoveralls.Post
alias ExCoveralls.Xml
alias ExCoveralls.Lcov
@type_travis "travis"
@type_github "github"
@type_gitlab "gitlab"
@type_circle "circle"
@type_semaphore "semaphore"
@type_drone "drone"
@type_local "local"
@type_html "html"
@type_json "json"
@type_post "post"
@type_xml "xml"
@type_lcov "lcov"
@doc """
This method will be called from mix to trigger coverage analysis.
"""
def start(compile_path, _opts) do
Cover.compile(compile_path)
fn() ->
execute(ConfServer.get, compile_path)
end
end
def execute(options, compile_path) do
stats =
Cover.modules() |>
Stats.report() |>
Enum.map(&Enum.into(&1, %{}))
if options[:umbrella] do
store_stats(stats, options, compile_path)
else
Stats.update_paths(stats, options) |>
analyze(options[:type] || "local", options)
end
end
defp store_stats(stats, options, compile_path) do
{sub_app_name, _sub_app_path} =
ExCoveralls.SubApps.find(options[:sub_apps], compile_path)
Stats.append_sub_app_name(stats, sub_app_name, options[:apps_path]) |>
Stats.update_paths(options) |>
Enum.each(fn(stat) -> StatServer.add(stat) end)
end
@doc """
Logic for posting
"""
def analyze(stats, type, options)
def analyze(stats, @type_travis, options) do
Travis.execute(stats, options)
end
def analyze(stats, @type_github, options) do
Github.execute(stats, options)
end
def analyze(stats, @type_gitlab, options) do
Gitlab.execute(stats, options)
end
def analyze(stats, @type_circle, options) do
Circle.execute(stats, options)
end
def analyze(stats, @type_semaphore, options) do
Semaphore.execute(stats, options)
end
def analyze(stats, @type_drone, options) do
Drone.execute(stats, options)
end
def analyze(stats, @type_local, options) do
Local.execute(stats, options)
end
def analyze(stats, @type_html, options) do
Html.execute(stats, options)
end
def analyze(stats, @type_json, options) do
Json.execute(stats, options)
end
def analyze(stats, @type_lcov, options) do
Lcov.execute(stats, options)
end
def analyze(stats, @type_xml, options) do
Xml.execute(stats, options)
end
def analyze(stats, @type_post, options) do
Post.execute(stats, options)
end
def analyze(_stats, type, _options) do
raise "Undefined type (#{type}) is specified for ExCoveralls"
end
end