Current section
Files
Jump to
Current section
Files
test/tasks/lcov_test.exs
defmodule LcovEx.Tasks.LcovTest do
use ExUnit.Case, async: true
describe "ExampleProject" do
setup do
on_exit(fn ->
# Cleanup
File.rm("example_project/cover/lcov.info")
end)
end
test "lcov task" do
Mix.Project.in_project(:example_project, "example_project", fn _module ->
assert Mix.Tasks.Lcov.run([])
end)
assert File.read!("example_project/cover/lcov.info") == output()
end
test "mix lcov" do
assert {output, 0} = System.cmd("mix", ["lcov"], cd: "example_project")
assert output =~ "Generating lcov file..."
assert output =~ "Coverage file created at cover/lcov.info"
assert File.read!("example_project/cover/lcov.info") == output()
end
test "mix lcov --quiet" do
assert {output, 0} = System.cmd("mix", ["lcov", "--quiet"], cd: "example_project")
refute output =~ "Generating lcov file..."
refute output =~ "Coverage file created at cover/lcov.info"
assert File.read!("example_project/cover/lcov.info") == output()
end
test "mix lcov --output" do
assert {output, 0} =
System.cmd("mix", ["lcov", "--output", "coverage"], cd: "example_project")
assert output =~ "Generating lcov file..."
assert output =~ "Coverage file created at coverage/lcov.info"
assert File.read!("example_project/coverage/lcov.info") == output()
after
File.rm_rf!("example_project/coverage")
end
test "mix lcov exits normally on failure" do
assert {output, 0} = System.cmd("mix", ["lcov"], cd: "example_failing_project")
assert output =~ "Generating lcov file..."
assert output =~ "Coverage file created at cover/lcov.info"
end
test "mix lcov --exit returns a non-zero exit code on failure" do
assert {output, 2} = System.cmd("mix", ["lcov", "--exit"], cd: "example_failing_project")
assert output =~ "Generating lcov file..."
assert output =~ "Coverage file created at cover/lcov.info"
end
end
describe "ExampleUmbrellaProject" do
setup do
on_exit(fn ->
# Cleanup
File.rm("example_umbrella_project/cover/lcov.info")
File.rm("example_umbrella_project/apps/example_project/cover/lcov.info")
File.rm("example_umbrella_project/apps/example_project_2/cover/lcov.info")
end)
end
test "lcov task" do
Mix.Project.in_project(:example_umbrella_project, "example_umbrella_project", fn _module ->
assert Mix.Tasks.Lcov.run([])
end)
assert File.read!("example_umbrella_project/cover/lcov.info") ==
umbrella_output() <> umbrella_output_2()
end
test "mix lcov" do
assert {output, 0} = System.cmd("mix", ["lcov"], cd: "example_umbrella_project")
assert output =~ "Generating lcov file..."
assert output =~ "Coverage file for umbrella created at cover/lcov.info"
refute output =~ "apps/example_project/cover/lcov.info"
refute output =~ "apps/example_project_2/cover/lcov.info"
assert File.read!("example_umbrella_project/cover/lcov.info") ==
umbrella_output() <> umbrella_output_2()
end
test "mix lcov --keep" do
assert {output, 0} = System.cmd("mix", ["lcov", "--keep"], cd: "example_umbrella_project")
assert output =~ "Generating lcov file..."
assert output =~
"Coverage file for example_project created at apps/example_project/cover/lcov.info"
assert output =~
"Coverage file for example_project_2 created at apps/example_project_2/cover/lcov.info"
assert output =~ "Coverage file for umbrella created at cover/lcov.info"
assert File.read!("example_umbrella_project/cover/lcov.info") ==
umbrella_output() <> umbrella_output_2()
end
test "mix lcov on umbrella app without the dependency" do
refute File.read!("example_umbrella_project/apps/example_project_2/mix.exs") =~ "lcov"
assert {output, 0} =
System.cmd("mix", ["lcov", "apps/example_project_2"],
cd: "example_umbrella_project"
)
assert output =~ "Generating lcov file..."
refute output =~ "Coverage file created at cover/lcov.info"
assert output =~ "Coverage file created at apps/example_project_2/cover/lcov.info"
assert File.read!("example_umbrella_project/apps/example_project_2/cover/lcov.info") ==
umbrella_output_2()
end
end
defp output do
"""
TN:Elixir.ExampleProject
SF:lib/example_project.ex
FNDA:1,covered/0
FNDA:1,mocked/1
FNDA:0,not_covered/0
FNF:3
FNH:2
DA:5,1
DA:9,1
DA:13,0
LF:3
LH:2
end_of_record
TN:Elixir.ExampleProject.ExampleBehaviour
SF:lib/example_project/example_behaviour.ex
FNDA:1,call/1
FNF:1
FNH:1
DA:6,1
LF:1
LH:1
end_of_record
TN:Elixir.ExampleProject.ExampleModule
SF:lib/example_project/example_module.ex
FNDA:1,cover/0
FNDA:1,get_value/0
FNF:2
FNH:2
DA:5,1
DA:8,1
LF:2
LH:2
end_of_record
"""
end
defp umbrella_output do
"""
TN:Elixir.ExampleProject
SF:apps/example_project/lib/example_project.ex
FNDA:1,covered/0
FNDA:0,not_covered/0
FNF:2
FNH:1
DA:5,1
DA:9,0
LF:2
LH:1
end_of_record
TN:Elixir.ExampleProject.ExampleModule
SF:apps/example_project/lib/example_project/example_module.ex
FNDA:1,cover/0
FNDA:1,get_value/0
FNF:2
FNH:2
DA:5,1
DA:8,1
LF:2
LH:2
end_of_record
"""
end
defp umbrella_output_2 do
"""
TN:Elixir.ExampleProject2
SF:apps/example_project_2/lib/example_project_2.ex
FNDA:1,also_covered/0
FNDA:1,covered/0
FNF:2
FNH:2
DA:5,1
DA:9,1
LF:2
LH:2
end_of_record
TN:Elixir.ExampleProject2.ExampleModule
SF:apps/example_project_2/lib/example_project_2/example_module.ex
FNDA:2,cover/0
FNDA:2,get_value/0
FNF:2
FNH:2
DA:5,2
DA:8,2
LF:2
LH:2
end_of_record
"""
end
end