Fix llvm profile path for wpt test coverage generation locally
Right now profraw path is `<llvm_profile_file_path>.profraw` which is wrong.
Change-Id: I9a36ec07dd1972dcd178a8fdb83ccfa7a9861025
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4549882
Reviewed-by: Benjamin Joyce (Ben) <[email protected]>
Commit-Queue: Benjamin Joyce (Ben) <[email protected]>
Auto-Submit: Prakhar Asthana <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1147304}
diff --git a/tools/code_coverage/coverage.py b/tools/code_coverage/coverage.py
index 095c3d3..0f481786 100755
--- a/tools/code_coverage/coverage.py
+++ b/tools/code_coverage/coverage.py
@@ -55,13 +55,17 @@
To learn more about generating code coverage reports for fuzz targets, see
https://chromium.googlesource.com/chromium/src/+/main/testing/libfuzzer/efficient_fuzzer.md#Code-Coverage
- * Sample workflow for running Blink web tests:
+ * Sample workflow for running Blink web platform tests:
vpython3 tools/code_coverage/coverage.py blink_tests \\
- -wt -b out/coverage -o out/report -f third_party/blink
+ -b out/coverage -o out/report -f third_party/blink -wt
- If you need to pass arguments to run_web_tests.py, use
- -wt='arguments to run_web_tests.py e.g. test directories'
+ -wt flag tells coverage script that it is a web test, and can also be
+ used to pass arguments to run_web_tests.py
+
+ vpython3 tools/code_coverage/coverage.py blink_wpt_tests \\
+ -b out/Release -o out/report
+ -wt external/wpt/webcodecs/per-frame-qp-encoding.https.any.js
For more options, please refer to tools/code_coverage/coverage.py -h.
@@ -858,8 +862,16 @@
return binary_paths
-def _GetCommandForWebTests(arguments):
+def _GetCommandForWebTests(targets, arguments):
"""Return command to run for blink web tests."""
+ assert len(targets) == 1, "Only one wpt target can be run"
+ target = targets[0]
+ expected_profraw_file_name = os.extsep.join(
+ [target, '%2m', PROFRAW_FILE_EXTENSION])
+ expected_profraw_file_path = os.path.join(
+ coverage_utils.GetCoverageReportRootDirPath(OUTPUT_DIR),
+ expected_profraw_file_name)
+
cpu_count = multiprocessing.cpu_count()
if sys.platform == 'win32':
# TODO(crbug.com/1190269) - we can't use more than 56
@@ -870,8 +882,7 @@
command_list = [
'third_party/blink/tools/run_web_tests.py',
'--additional-driver-flag=--no-sandbox',
- '--additional-env-var=LLVM_PROFILE_FILE=%s' %
- LLVM_PROFILE_FILE_PATH_SUBSTITUTION,
+ '--additional-env-var=LLVM_PROFILE_FILE=%s' % expected_profraw_file_path,
'--child-processes=%d' % cpu_count, '--disable-breakpad',
'--no-show-results', '--skip-failing-tests',
'--target=%s' % os.path.basename(BUILD_DIR), '--timeout-ms=30000'
@@ -1104,7 +1115,7 @@
# Get .profdata file and list of binary paths.
if args.web_tests:
- commands = [_GetCommandForWebTests(args.web_tests)]
+ commands = [_GetCommandForWebTests(args.targets, args.web_tests)]
profdata_file_path = _CreateCoverageProfileDataForTargets(
args.targets, commands, args.jobs)
binary_paths = [_GetBinaryPathForWebTests()]