aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java
diff options
context:
space:
mode:
authorGravatar ulfjack <ulfjack@google.com>2017-08-10 15:36:14 +0200
committerGravatar Marcel Hlopko <hlopko@google.com>2017-08-11 12:53:15 +0200
commitab21d18ddb5b53e887b4fd51ddc5d021621673d4 (patch)
tree2fe2d5819769a6672b5839381b1e447124b18b72 /src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java
parent53641e5d303e23b89bd4653e5f0a510161bd71a2 (diff)
Move core test classes to lib.analysis.test
These are depended upon by analysis code, so need to live in the same library as lib.analysis. Moving them here makes it possible to split the build-base library into separate libraries for analysis, execution, and rules. PiperOrigin-RevId: 164847161
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java
new file mode 100644
index 0000000000..e5678f389a
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java
@@ -0,0 +1,70 @@
+// Copyright 2014 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.analysis.test;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
+import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.ArtifactFactory;
+import com.google.devtools.build.lib.actions.ArtifactOwner;
+import com.google.devtools.build.lib.analysis.BlazeDirectories;
+import com.google.devtools.build.lib.analysis.ConfiguredTarget;
+import com.google.devtools.build.lib.events.EventHandler;
+import java.util.Collection;
+import javax.annotation.Nullable;
+
+/**
+ * A factory class to create coverage report actions.
+ */
+public interface CoverageReportActionFactory {
+ /**
+ * Wraps the necessary actions to get a coverage report as well as the final output artifacts.
+ * The lcovWriteAction creates a file containing a set of lcov files. This file is used as an
+ * input artifact for coverageReportAction. We are only interested about the output artifacts from
+ * coverageReportAction.
+ */
+ public static final class CoverageReportActionsWrapper {
+ private final ActionAnalysisMetadata lcovWriteAction;
+ private final ActionAnalysisMetadata coverageReportAction;
+
+ public CoverageReportActionsWrapper (
+ ActionAnalysisMetadata lcovWriteAction, ActionAnalysisMetadata coverageReportAction) {
+ this.lcovWriteAction = lcovWriteAction;
+ this.coverageReportAction = coverageReportAction;
+ }
+
+ public ImmutableList<ActionAnalysisMetadata> getActions() {
+ return ImmutableList.of(lcovWriteAction, coverageReportAction);
+ }
+
+ public ImmutableSet<Artifact> getCoverageOutputs() {
+ return coverageReportAction.getOutputs();
+ }
+ }
+
+ /**
+ * Returns a CoverageReportActionsWrapper. May return null if it's not necessary to create
+ * such Actions based on the input parameters and some other data available to the factory
+ * implementation, such as command line options.
+ */
+ @Nullable
+ CoverageReportActionsWrapper createCoverageReportActionsWrapper(
+ EventHandler eventHandler,
+ BlazeDirectories directories,
+ Collection<ConfiguredTarget> targetsToTest,
+ Iterable<Artifact> baselineCoverageArtifacts,
+ ArtifactFactory artifactFactory, ArtifactOwner artifactOwner);
+}