blob: 116c4d0c4dddf7b51e173ae576b2ad9f47a9fd9e [file] [log] [blame]
// 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=\"../../command-line-reference.html"
+ "#flag--instrumentation_filter\"><code>--instrumentation_filter</code></a> "
+ "for purposes of <a href=\"../rules.html#code-coverage-instrumentation\">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=\"../aspects.html\">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=\"depset.html\"><code>depset</code></a> of <a href=\"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=\"depset.html\"><code>depset</code></a> of <a href=\"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();
}