diff options
-rw-r--r-- | llvm/test/tools/llvm-cov/dir-with-filtering.test | 16 | ||||
-rw-r--r-- | llvm/tools/llvm-cov/CoverageReport.cpp | 8 | ||||
-rw-r--r-- | llvm/tools/llvm-cov/CoverageReport.h | 2 | ||||
-rw-r--r-- | llvm/tools/llvm-cov/SourceCoverageView.h | 4 | ||||
-rw-r--r-- | llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp | 5 | ||||
-rw-r--r-- | llvm/tools/llvm-cov/SourceCoverageViewHTML.h | 2 | ||||
-rw-r--r-- | llvm/tools/llvm-cov/SourceCoverageViewText.cpp | 3 | ||||
-rw-r--r-- | llvm/tools/llvm-cov/SourceCoverageViewText.h | 2 |
8 files changed, 30 insertions, 12 deletions
diff --git a/llvm/test/tools/llvm-cov/dir-with-filtering.test b/llvm/test/tools/llvm-cov/dir-with-filtering.test index f3b68dd..9249423 100644 --- a/llvm/test/tools/llvm-cov/dir-with-filtering.test +++ b/llvm/test/tools/llvm-cov/dir-with-filtering.test @@ -32,6 +32,14 @@ TEXT-INDEX-ONE-FILE-NOT: dir-with-filtering2.cpp RUN: FileCheck -input-file=%t.text_one_file/coverage/tmp/dir-with-filtering1.cpp.txt %s -check-prefix=TEXT-FILE1
+// Test TEXT index file with all functions in one file filtered out
+
+RUN: llvm-cov show %S/Inputs/dir-with-filtering.covmapping -o %t.text_one_func -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs -name=main
+RUN: FileCheck -input-file=%t.text_one_func/index.txt %s -check-prefix=TEXT-INDEX-ONE-FUNC
+
+TEXT-INDEX-ONE-FUNC-NOT: Files which contain no functions
+TEXT-INDEX-ONE-FUNC-NOT: dir-with-filtering2.cpp
+
// Test HTML both files
RUN: llvm-profdata merge %S/Inputs/dir-with-filtering.proftext -o %t.profdata
@@ -67,3 +75,11 @@ HTML-INDEX-ONE-FILE: dir-with-filtering1.cpp{{.*}}100.00% (1/1){{.*}}100.00% (4/ HTML-INDEX-ONE-FILE-NOT: dir-with-filtering2.cpp
RUN: FileCheck -input-file=%t.html_one_file/coverage/tmp/dir-with-filtering1.cpp.html %s -check-prefix=HTML-FILE1
+
+// Test HTML index file with all functions in one file filtered out
+
+RUN: llvm-cov show %S/Inputs/dir-with-filtering.covmapping -format html -o %t.html_one_func -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs -name=main
+RUN: FileCheck -input-file=%t.html_one_func/index.html %s -check-prefix=HTML-INDEX-ONE-FUNC
+
+HTML-INDEX-ONE-FUNC-NOT: Files which contain no functions
+HTML-INDEX-ONE-FUNC-NOT: dir-with-filtering2.cpp
diff --git a/llvm/tools/llvm-cov/CoverageReport.cpp b/llvm/tools/llvm-cov/CoverageReport.cpp index 5c8ffe1..5674530 100644 --- a/llvm/tools/llvm-cov/CoverageReport.cpp +++ b/llvm/tools/llvm-cov/CoverageReport.cpp @@ -367,9 +367,9 @@ void CoverageReport::renderFileReports(raw_ostream &OS) const { renderFileReports(OS, UniqueSourceFiles, CoverageFiltersMatchAll()); } -void CoverageReport::renderFileReports(raw_ostream &OS, - ArrayRef<std::string> Files, - const CoverageFilter &Filters) const { +void CoverageReport::renderFileReports( + raw_ostream &OS, ArrayRef<std::string> Files, + const CoverageFiltersMatchAll &Filters) const { FileCoverageSummary Totals("TOTAL"); auto FileReports = prepareFileReports(Coverage, Totals, Files, Options, Filters); @@ -405,7 +405,7 @@ void CoverageReport::renderFileReports(raw_ostream &OS, EmptyFiles = true; } - if (EmptyFiles) { + if (EmptyFiles && Filters.empty()) { OS << "\n" << "Files which contain no functions:\n"; diff --git a/llvm/tools/llvm-cov/CoverageReport.h b/llvm/tools/llvm-cov/CoverageReport.h index d78f2e4..4126c31 100644 --- a/llvm/tools/llvm-cov/CoverageReport.h +++ b/llvm/tools/llvm-cov/CoverageReport.h @@ -50,7 +50,7 @@ public: /// Render file reports for the files specified in \p Files and the functions /// in \p Filters. void renderFileReports(raw_ostream &OS, ArrayRef<std::string> Files, - const CoverageFilter &Filters) const; + const CoverageFiltersMatchAll &Filters) const; }; } // end namespace llvm diff --git a/llvm/tools/llvm-cov/SourceCoverageView.h b/llvm/tools/llvm-cov/SourceCoverageView.h index 7c7e878..2408028 100644 --- a/llvm/tools/llvm-cov/SourceCoverageView.h +++ b/llvm/tools/llvm-cov/SourceCoverageView.h @@ -22,7 +22,7 @@ namespace llvm { -class CoverageFilter; +class CoverageFiltersMatchAll; class SourceCoverageView; /// \brief A view that represents a macro or include expansion. @@ -113,7 +113,7 @@ public: /// \brief Create an index which lists reports for the given source files. virtual Error createIndexFile(ArrayRef<std::string> SourceFiles, const coverage::CoverageMapping &Coverage, - const CoverageFilter &Filters) = 0; + const CoverageFiltersMatchAll &Filters) = 0; /// @} }; diff --git a/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp b/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp index a031f18..b8fdf44 100644 --- a/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp +++ b/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp @@ -366,7 +366,8 @@ void CoveragePrinterHTML::emitFileSummary(raw_ostream &OS, StringRef SF, Error CoveragePrinterHTML::createIndexFile( ArrayRef<std::string> SourceFiles, - const coverage::CoverageMapping &Coverage, const CoverageFilter &Filters) { + const coverage::CoverageMapping &Coverage, + const CoverageFiltersMatchAll &Filters) { // Emit the default stylesheet. auto CSSOrErr = createOutputStream("style", "css", /*InToplevel=*/true); if (Error E = CSSOrErr.takeError()) @@ -419,7 +420,7 @@ Error CoveragePrinterHTML::createIndexFile( // Emit links to files which don't contain any functions. These are normally // not very useful, but could be relevant for code which abuses the // preprocessor. - if (EmptyFiles) { + if (EmptyFiles && Filters.empty()) { OSRef << tag("p", "Files which contain no functions. (These " "files contain code pulled into other files " "by the preprocessor.)\n"); diff --git a/llvm/tools/llvm-cov/SourceCoverageViewHTML.h b/llvm/tools/llvm-cov/SourceCoverageViewHTML.h index e11111a..978a75ae 100644 --- a/llvm/tools/llvm-cov/SourceCoverageViewHTML.h +++ b/llvm/tools/llvm-cov/SourceCoverageViewHTML.h @@ -30,7 +30,7 @@ public: Error createIndexFile(ArrayRef<std::string> SourceFiles, const coverage::CoverageMapping &Coverage, - const CoverageFilter &Filters) override; + const CoverageFiltersMatchAll &Filters) override; CoveragePrinterHTML(const CoverageViewOptions &Opts) : CoveragePrinter(Opts) {} diff --git a/llvm/tools/llvm-cov/SourceCoverageViewText.cpp b/llvm/tools/llvm-cov/SourceCoverageViewText.cpp index b2902df1..261f08d 100644 --- a/llvm/tools/llvm-cov/SourceCoverageViewText.cpp +++ b/llvm/tools/llvm-cov/SourceCoverageViewText.cpp @@ -30,7 +30,8 @@ void CoveragePrinterText::closeViewFile(OwnedStream OS) { Error CoveragePrinterText::createIndexFile( ArrayRef<std::string> SourceFiles, - const coverage::CoverageMapping &Coverage, const CoverageFilter &Filters) { + const coverage::CoverageMapping &Coverage, + const CoverageFiltersMatchAll &Filters) { auto OSOrErr = createOutputStream("index", "txt", /*InToplevel=*/true); if (Error E = OSOrErr.takeError()) return E; diff --git a/llvm/tools/llvm-cov/SourceCoverageViewText.h b/llvm/tools/llvm-cov/SourceCoverageViewText.h index 3a04070..5cf7caf 100644 --- a/llvm/tools/llvm-cov/SourceCoverageViewText.h +++ b/llvm/tools/llvm-cov/SourceCoverageViewText.h @@ -28,7 +28,7 @@ public: Error createIndexFile(ArrayRef<std::string> SourceFiles, const coverage::CoverageMapping &Coverage, - const CoverageFilter &Filters) override; + const CoverageFiltersMatchAll &Filters) override; CoveragePrinterText(const CoverageViewOptions &Opts) : CoveragePrinter(Opts) {} |