| // Copyright 2019 The Bazel Authors. All rights reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package com.google.devtools.build.lib.starlarkbuildapi.test; |
| |
| import com.google.devtools.build.docgen.annot.DocCategory; |
| import com.google.devtools.build.lib.collect.nestedset.Depset; |
| import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi; |
| import net.starlark.java.annot.StarlarkBuiltin; |
| import net.starlark.java.annot.StarlarkMethod; |
| |
| /** Contains information about instrumented files sources and instrumentation metadata. */ |
| @StarlarkBuiltin( |
| name = "InstrumentedFilesInfo", |
| category = DocCategory.PROVIDER, |
| doc = |
| "Contains information about source files and instrumentation metadata files for rule" |
| + " targets matched by <a" |
| + " href=\"https://bazel.build/reference/command-line-reference#flag--instrumentation_filter\"><code>--instrumentation_filter</code></a>" |
| + " for purposes of <a href=\"https://bazel.build/extending/rules#code_coverage\">code" |
| + " coverage data collection</a>. When coverage data collection is enabled, a manifest" |
| + " containing the combined paths in <a" |
| + " href=\"#instrumented_files\"><code>instrumented_files</code></a> and <a" |
| + " href=\"#metadata_files\"><code>metadata_files</code></a> are passed to the test" |
| + " action as inputs, with the manifest's path noted in the environment variable" |
| + " <code>COVERAGE_MANIFEST</code>. The metadata files, but not the source files, are" |
| + " also passed to the test action as inputs. When <code>InstrumentedFilesInfo</code>" |
| + " is returned by an <a href=\"https://bazel.build/rules/aspects\">aspect</a>'s" |
| + " implementation function, any <code>InstrumentedFilesInfo</code> from the base rule" |
| + " target is ignored.") |
| public interface InstrumentedFilesInfoApi extends StructApi { |
| |
| @StarlarkMethod( |
| name = "instrumented_files", |
| doc = |
| "<a href=\"../builtins/depset.html\"><code>depset</code></a> of <a" |
| + " href=\"../builtins/File.html\"><code>File</code></a> objects representing" |
| + " instrumented source files for this target and its dependencies.", |
| structField = true) |
| Depset getInstrumentedFilesForStarlark(); |
| |
| @StarlarkMethod( |
| name = "metadata_files", |
| doc = |
| "<a href=\"../builtins/depset.html\"><code>depset</code></a> of <a" |
| + " href=\"../builtins/File.html\"><code>File</code></a> objects representing" |
| + " coverage metadata files for this target and its dependencies. These files contain" |
| + " additional information required to generate LCOV-format coverage output after the" |
| + " code is executed, e.g. the <code>.gcno</code> files generated when" |
| + " <code>gcc</code> is run with <code>-ftest-coverage</code>.", |
| structField = true) |
| Depset getInstrumentationMetadataFilesForStarlark(); |
| } |