-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRakefile
38 lines (30 loc) · 1.04 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# frozen_string_literal: true
require "bundler/gem_tasks"
require "rubocop/rake_task"
RuboCop::RakeTask.new
require "rspec/core/rake_task"
RSpec::Core::RakeTask.new(:spec, [:coverage]) do |config, args|
config.ruby_opts = "-r./.simplecov_spawn" if args[:coverage]
config.rspec_opts = "--format documentation"
end
namespace :coverage do
desc "Run coverage with spec"
task :run do
Rake::Task[:spec].invoke(coverage: true)
end
desc "Collate coverage results generated by different test runners"
task :report do
require "simplecov"
coverage_dir = File.join(File.dirname(SimpleCov.coverage_dir), "ruby-*")
coverage_results = Dir[File.join(coverage_dir, ".resultset.json")]
raise <<~MSG if coverage_results.empty?
Coverage results not found, searched in:
#{Dir[coverage_dir].map { |dir| " - #{dir}" }.join("\n")}
MSG
SimpleCov.collate(coverage_results) do
coverage_dir "coverage"
end
end
end
desc "Run coverage analysis and collate coverage results"
task coverage: ["coverage:run", "coverage:report"]