Class: Fastlane::Actions::LcovAction
Class Method Summary
collapse
action_name, authors, details, method_missing, other_action, output, return_value, sh, step_text
Class Method Details
.author ⇒ Object
45
46
47
|
# File 'lib/fastlane/actions/lcov.rb', line 45
def self.author
"thiagolioy"
end
|
.available_options ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/fastlane/actions/lcov.rb', line 20
def self.available_options
[
FastlaneCore::ConfigItem.new(key: :project_name,
env_name: "FL_LCOV_PROJECT_NAME",
description: "Name of the project"),
FastlaneCore::ConfigItem.new(key: :scheme,
env_name: "FL_LCOV_SCHEME",
description: "Scheme of the project"),
FastlaneCore::ConfigItem.new(key: :arch,
env_name: "FL_LCOV_ARCH",
description: "The build arch where will search .gcda files",
default_value: "i386"),
FastlaneCore::ConfigItem.new(key: :output_dir,
env_name: "FL_LCOV_OUTPUT_DIR",
description: "The output directory that coverage data will be stored. If not passed will use coverage_reports as default value",
optional: true,
is_string: true,
default_value: "coverage_reports")
]
end
|
.derived_data_dir(options) ⇒ Object
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/fastlane/actions/lcov.rb', line 67
def self.derived_data_dir(options)
pn = options[:project_name]
sc = options[:scheme]
arch = options[:arch]
initial_path = "#{Dir.home}/Library/Developer/Xcode/DerivedData/"
end_path = "/Build/Intermediates/#{pn}.build/Debug-iphonesimulator/#{sc}.build/Objects-normal/#{arch}/"
match = find_project_dir(pn, initial_path)
"#{initial_path}#{match}#{end_path}"
end
|
.description ⇒ Object
16
17
18
|
# File 'lib/fastlane/actions/lcov.rb', line 16
def self.description
"Generates coverage data using lcov"
end
|
.exclude_dirs ⇒ Object
84
85
86
|
# File 'lib/fastlane/actions/lcov.rb', line 84
def self.exclude_dirs
["/Applications/*", "/Frameworks/*"]
end
|
.find_project_dir(project_name, path) ⇒ Object
80
81
82
|
# File 'lib/fastlane/actions/lcov.rb', line 80
def self.find_project_dir(project_name, path)
`ls -t #{path}| grep #{project_name} | head -1`.to_s.delete("\n")
end
|
.gen_cov(options) ⇒ Object
49
50
51
52
53
54
55
56
57
|
# File 'lib/fastlane/actions/lcov.rb', line 49
def self.gen_cov(options)
tmp_cov_file = "/tmp/coverage.info"
output_dir = options[:output_dir]
derived_data_path = derived_data_dir(options)
system("lcov --capture --directory \"#{derived_data_path}\" --output-file #{tmp_cov_file}")
system(gen_lcov_cmd(tmp_cov_file))
system("genhtml #{tmp_cov_file} --output-directory #{output_dir}")
end
|
.gen_lcov_cmd(cov_file) ⇒ Object
59
60
61
62
63
64
65
|
# File 'lib/fastlane/actions/lcov.rb', line 59
def self.gen_lcov_cmd(cov_file)
cmd = "lcov "
exclude_dirs.each do |e|
cmd << "--remove #{cov_file} \"#{e}\" "
end
cmd << "--output #{cov_file} "
end
|
.is_supported?(platform) ⇒ Boolean
5
6
7
|
# File 'lib/fastlane/actions/lcov.rb', line 5
def self.is_supported?(platform)
[:ios, :mac].include? platform
end
|
.run(options) ⇒ Object
9
10
11
12
13
14
|
# File 'lib/fastlane/actions/lcov.rb', line 9
def self.run(options)
unless Helper.test?
UI.user_error!("lcov not installed, please install using `brew install lcov`") if `which lcov`.length == 0
end
gen_cov(options)
end
|