Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added primitive support for llvm-cov -path-equivalence. #547

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion lib/slather/coverage_info.rb
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,15 @@ def rate_branches_tested
end

def source_file_pathname_relative_to_repo_root
source_file_pathname.realpath.relative_path_from(Pathname("./").realpath)
test_path=source_file_pathname
equivalence=ENV["COVERAGE_PATH_EQUIVALENCE"]
if equivalence
orig_prefix=equivalence.delete_suffix(",.")
if "#{source_file_pathname}".start_with?(orig_prefix)
test_path=Pathname("." + "#{source_file_pathname}".delete_prefix(orig_prefix))
end
end
test_path.realpath.relative_path_from(Pathname("./").realpath)
end

def ignored?
Expand Down
6 changes: 6 additions & 0 deletions lib/slather/project.rb
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,9 @@ def unsafe_llvm_cov_export_output(binary_path)
if self.arch
llvm_cov_args << "--arch" << self.arch
end
if ENV["COVERAGE_PATH_EQUIVALENCE"]
llvm_cov_args << "-path-equivalence=#{ENV["COVERAGE_PATH_EQUIVALENCE"]}"
end
`xcrun llvm-cov #{llvm_cov_args.shelljoin}`
end
private :unsafe_llvm_cov_export_output
Expand All @@ -293,6 +296,9 @@ def unsafe_profdata_llvm_cov_output(binary_path, source_files)
if self.arch
llvm_cov_args << "--arch" << self.arch
end
if ENV["COVERAGE_PATH_EQUIVALENCE"]
llvm_cov_args << "-path-equivalence=#{ENV["COVERAGE_PATH_EQUIVALENCE"]}"
end

# POSIX systems have an ARG_MAX for the maximum total length of the command line, so the command may fail with an error message of "Argument list too long".
# Using the xargs command we can break the list of source_files into sublists small enough to be acceptable.
Expand Down