[llvm-cov] Use the native path in the coverage report.

The coverage reports contain the source or binary file paths. On Windows, 
the file path might contain the seperators of both '/' and '\'. This patch 
uses the native path in the coverage reports. For example, on Windows, 
all '/' are converted to '\'.

Differential Revision: https://reviews.llvm.org/D23922

llvm-svn: 280061
This commit is contained in:
Ying Yi
2016-08-30 07:01:37 +00:00
parent 80a9579db9
commit 76eb219c9b
6 changed files with 33 additions and 2 deletions

View File

@@ -308,7 +308,10 @@ Error CoveragePrinterHTML::createIndexFile(ArrayRef<StringRef> SourceFiles) {
OSRef << BeginCenteredDiv << BeginTable;
OSRef << BeginSourceNameDiv << "Index" << EndSourceNameDiv;
for (StringRef SF : SourceFiles) {
std::string LinkText = escape(sys::path::relative_path(SF), Opts);
SmallString<128> LinkTextStr(sys::path::relative_path(SF));
sys::path::remove_dots(LinkTextStr, /*remove_dot_dots=*/true);
sys::path::native(LinkTextStr);
std::string LinkText = escape(sys::path::relative_path(LinkTextStr), Opts);
std::string LinkTarget =
escape(getOutputPath(SF, "html", /*InToplevel=*/false), Opts);
OSRef << tag("tr", tag("td", tag("pre", a(LinkTarget, LinkText), "code")));
@@ -340,7 +343,10 @@ void SourceCoverageViewHTML::renderSourceName(raw_ostream &OS, bool WholeFile) {
// Render the source name for the view.
std::string SourceFile = isFunctionView() ? "Function: " : "Source: ";
SourceFile += getSourceName().str();
OS << tag("pre", escape(SourceFile, getOptions()));
SmallString<128> SourceText(SourceFile);
sys::path::remove_dots(SourceText, /*remove_dot_dots=*/true);
sys::path::native(SourceText);
OS << tag("pre", escape(SourceText, getOptions()));
// Render the object file name for the view.
if (WholeFile)
OS << tag("pre",