[PATCH] D23922: [llvm-cov] Use the native path in the coverage report.
Ying Yi via llvm-commits
llvm-commits at lists.llvm.org
Sun Aug 28 12:25:04 PDT 2016
MaggieYi updated this revision to Diff 69517.
MaggieYi added a comment.
Thanks Vedant, the patch has been updated following your comments.
https://reviews.llvm.org/D23922
Files:
test/tools/llvm-cov/Inputs/native_separators.covmapping
test/tools/llvm-cov/double_dots.c
test/tools/llvm-cov/native_separators.c
tools/llvm-cov/CodeCoverage.cpp
tools/llvm-cov/SourceCoverageView.cpp
tools/llvm-cov/SourceCoverageViewHTML.cpp
Index: tools/llvm-cov/SourceCoverageViewHTML.cpp
===================================================================
--- tools/llvm-cov/SourceCoverageViewHTML.cpp
+++ tools/llvm-cov/SourceCoverageViewHTML.cpp
@@ -308,7 +308,10 @@
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 @@
// 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",
Index: tools/llvm-cov/SourceCoverageView.cpp
===================================================================
--- tools/llvm-cov/SourceCoverageView.cpp
+++ tools/llvm-cov/SourceCoverageView.cpp
@@ -46,6 +46,7 @@
auto PathFilename = (sys::path::filename(Path) + "." + Extension).str();
sys::path::append(FullPath, PathFilename);
+ sys::path::native(FullPath);
return FullPath.str();
}
Index: tools/llvm-cov/CodeCoverage.cpp
===================================================================
--- tools/llvm-cov/CodeCoverage.cpp
+++ tools/llvm-cov/CodeCoverage.cpp
@@ -468,6 +468,7 @@
error(EC.message(), this->ObjectFilename);
return 1;
}
+ sys::path::native(ObjectFilePath);
ViewOpts.ObjectFilename = ObjectFilePath.c_str();
switch (ViewOpts.Format) {
case CoverageViewOptions::OutputFormat::Text:
Index: test/tools/llvm-cov/native_separators.c
===================================================================
--- /dev/null
+++ test/tools/llvm-cov/native_separators.c
@@ -0,0 +1,21 @@
+// To create the covmapping for this file on Linux, copy this file to /tmp
+// cd into /tmp. Use llvm-cov convert-for-testing to extract the covmapping.
+// This test is Windows-only. It checks that all paths, which are generated
+// in the index and source coverage reports, are native path. For example,
+// on Windows all '/' are converted to '\'.
+// REQUIRES: system-windows
+
+// RUN: llvm-profdata merge %S/Inputs/double_dots.proftext -o %t.profdata
+// RUN: llvm-cov show %S/Inputs/native_separators.covmapping -instr-profile=%t.profdata -o %t.dir
+// RUN: FileCheck -check-prefixes=TEXT-INDEX -input-file=%t.dir/index.txt %s
+// RUN: llvm-cov show -format=html %S/Inputs/native_separators.covmapping -instr-profile=%t.profdata -o %t.dir
+// RUN: FileCheck -check-prefixes=HTML-INDEX -input-file=%t.dir/index.html %s
+// RUN: llvm-cov show -format=html %S/Inputs/native_separators.covmapping -instr-profile=%t.profdata -filename-equivalence %s -o %t.dir
+// RUN: FileCheck -check-prefixes=HTML -input-file=%t.dir/coverage/tmp/native_separators.c.html %s
+
+// TEXT-INDEX: \tmp\native_separators.c
+// HTML-INDEX: >tmp\native_separators.c</a>
+// HTML: <pre>Source: \tmp\native_separators.c</pre>
+// HTML: tools\llvm-cov\Inputs\native_separators.covmapping</pre>
+
+int main() {}
Index: test/tools/llvm-cov/double_dots.c
===================================================================
--- test/tools/llvm-cov/double_dots.c
+++ test/tools/llvm-cov/double_dots.c
@@ -5,6 +5,8 @@
// RUN: llvm-profdata merge %S/Inputs/double_dots.proftext -o %t.profdata
// RUN: llvm-cov show %S/Inputs/double_dots.covmapping -instr-profile=%t.profdata -o %t.dir
// RUN: FileCheck -input-file=%t.dir/index.txt %s
+// RUN: llvm-cov show -format=html %S/Inputs/double_dots.covmapping -instr-profile=%t.profdata -o %t.dir
+// RUN: FileCheck -input-file=%t.dir/index.html %s
// CHECK-NOT: coverage{{.*}}dots{{.*}}..{{.*}}dots
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23922.69517.patch
Type: text/x-patch
Size: 4366 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160828/d3873742/attachment.bin>
More information about the llvm-commits
mailing list