Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1633)

Unified Diff: docs/ios/coverage.md

Issue 2789433004: Add tools for code coverage support in iOS. (Closed)
Patch Set: Rebased Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/secondary/testing/gtest/BUILD.gn ('k') | docs/ios/images/coverage_xcode.png » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: docs/ios/coverage.md
diff --git a/docs/ios/coverage.md b/docs/ios/coverage.md
new file mode 100644
index 0000000000000000000000000000000000000000..72857182fe4d8c0a40855eea5165c60908e090b0
--- /dev/null
+++ b/docs/ios/coverage.md
@@ -0,0 +1,78 @@
+# Generate code coverage data
+
+1. Build a test target for coverage:
+
+ ```
+ ninja -C out/Coverage-iphonesimulator ios_chrome_unittests
+ ```
+
+ Targets that support code coverage need to call
+ `coverage_util::ConfigureCoverageReportPath()`.
+ If you don't use `setup-gn.py`, you can set the gn argument
+ `ios_enable_coverage` to `true`.
+
+1. Run the test target. If using Xcode, don't forget to set `Coverage` in the
+ target's scheme:
+
+ ![](images/coverage_xcode.png)
+
+1. Find the `coverage.profraw` in the `Documents` folder of the app. You can
+ look in the console output of the instrumented target. For example:
+
+ ```
+ Coverage data at /Users/johndoe/Library/Developer/CoreSimulator/Devices/
+ 82D642FA-FC18-4EDB-AFE0-A17454804BE4/data/Containers/Data/Application/
+ E6B2B898-CE13-4958-93F3-E8B500446381/Documents/coverage.profraw
+ ```
+
+1. Create a `coverage.profdata` file out of the `coverage.profraw` file:
+
+ ```
+ xcrun llvm-profdata merge \
+ -o out/Coverage-iphonesimulator/coverage.profdata \
+ path/to/coverage.profraw
+ ```
+
+1. To see the **line coverage** for *all the instrumented source files*:
+
+ ```
+ xcrun llvm-cov show \
+ out/Coverage-iphonesimulator/ios_chrome_unittests.app/ios_chrome_unittests \
+ -instr-profile=out/Coverage-iphonesimulator/coverage.profdata \
+ -arch=x86_64
+ ```
+
+ ![](images/llvm-cov_show.png)
+
+ To see the **line coverage** for a *specific instrumented source
+ file/folder* (e.g.
+ `ios/chrome/browser/ui/coordinators/browser_coordinator.mm`):
+
+ ```
+ xcrun llvm-cov show \
+ out/Coverage-iphonesimulator/ios_chrome_unittests.app/ios_chrome_unittests \
+ -instr-profile=out/Coverage-iphonesimulator/coverage.profdata \
+ -arch=x86_64 ios/chrome/browser/ui/coordinators/browser_coordinator.mm
+ ```
+
+ ![](images/llvm-cov_show_file.png)
+
+ To see a **complete report**:
+
+ ```
+ xcrun llvm-cov report \
+ out/Coverage-iphonesimulator/ios_chrome_unittests.app/ios_chrome_unittests \
+ -instr-profile=path/to/coverage.profdata -arch=x86_64
+ ```
+
+ ![](images/llvm-cov_report.png)
+
+ To see a **report** for a *folder/file* (e.g. `ios/chrome/browser` folder):
+
+ ```
+ xcrun llvm-cov show \
+ out/Coverage-iphonesimulator/ios_chrome_unittests.app/ios_chrome_unittests \
+ -instr-profile=path/to/coverage.profdata -arch=x86_64 ios/chrome/browser
+ ```
+
+ ![](images/llvm-cov_report_folder.png)
« no previous file with comments | « build/secondary/testing/gtest/BUILD.gn ('k') | docs/ios/images/coverage_xcode.png » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698