Packages
excoveralls
0.11.2
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/circle.ex
defmodule ExCoveralls.Circle do
@moduledoc """
Handles circle-ci integration with coveralls.
"""
alias ExCoveralls.Poster
def execute(stats, options) do
json = generate_json(stats, Enum.into(options, %{}))
if options[:verbose] do
IO.puts json
end
Poster.execute(json)
end
def generate_json(stats, options \\ %{})
def generate_json(stats, options) do
Jason.encode!(%{
repo_token: get_repo_token(),
service_name: "circle-ci",
service_number: get_number(),
service_job_id: get_job_id(),
service_pull_request: get_pull_request(),
source_files: stats,
git: generate_git_info(),
parallel: options[:parallel]
})
end
defp generate_git_info do
%{head: %{
committer_name: get_committer(),
message: get_message!(),
id: get_sha()
},
branch: get_branch()
}
end
defp get_pull_request do
case Regex.run(~r/(\d+)$/, System.get_env("CI_PULL_REQUEST") || "") do
[_, id] -> id
_ -> nil
end
end
defp get_message! do
case System.cmd("git", ["log", "-1", "--pretty=format:%s"]) do
{message, _} -> message
_ -> "[no commit message]"
end
end
defp get_committer do
System.get_env("CIRCLE_USERNAME")
end
defp get_sha do
System.get_env("CIRCLE_SHA1")
end
defp get_branch do
System.get_env("CIRCLE_BRANCH")
end
defp get_job_id do
# When using workflows, each job has a separate `CIRCLE_BUILD_NUM`, so this needs to be used as the Job ID and not
# the Job Number.
System.get_env("CIRCLE_BUILD_NUM")
end
defp get_number do
# `CIRCLE_WORKFLOW_WORKSPACE_ID` is the same when "Rerun failed job" is done while `CIRCLE_WORKFLOW_ID` changes, so
# use `CIRCLE_WORKFLOW_WORKSPACE_ID` so that the results from the original and rerun are combined
System.get_env("CIRCLE_WORKFLOW_WORKSPACE_ID") || System.get_env("CIRCLE_BUILD_NUM")
end
defp get_repo_token do
System.get_env("COVERALLS_REPO_TOKEN")
end
end