aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Han-Wen Nienhuys <hanwen@google.com>2015-07-30 12:24:34 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-07-30 15:43:07 +0000
commit6798135c65b16a962b75e9ee1aea9de8ba694e8f (patch)
treefa60ba4df1192264eceb3e6a1c192ffd65b334c9 /src/main/java/com/google/devtools/build/lib
parente449d50a64f400584abe9439de1a06a6f82de5c1 (diff)
*** Reason for rollback *** Various targets in nightly broken. -- MOS_MIGRATED_REVID=99466859
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFileManifestAction.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java23
3 files changed, 23 insertions, 17 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java b/src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java
index f83c798c36..cb90155b80 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java
@@ -23,6 +23,7 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Executor;
import com.google.devtools.build.lib.actions.NotifyOnActionCacheHit;
import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.analysis.Util;
import com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -30,7 +31,6 @@ import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.syntax.Label;
import com.google.devtools.build.lib.util.Fingerprint;
-import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
import java.io.OutputStream;
@@ -121,8 +121,8 @@ public class BaselineCoverageAction extends AbstractFileWriteAction
public static NestedSet<Artifact> getBaselineCoverageArtifacts(RuleContext ruleContext,
Iterable<Artifact> instrumentedFiles) {
// Baseline coverage artifacts will still go into "testlogs" directory.
- Artifact coverageData = ruleContext.getPackageRelativeArtifact(
- new PathFragment(ruleContext.getTarget().getName()).getChild("baseline_coverage.dat"),
+ Artifact coverageData = ruleContext.getAnalysisEnvironment().getDerivedArtifact(
+ Util.getWorkspaceRelativePath(ruleContext.getTarget()).getChild("baseline_coverage.dat"),
ruleContext.getConfiguration().getTestLogsDirectory());
ruleContext.registerAction(new BaselineCoverageAction(
ruleContext.getActionOwner(), instrumentedFiles, coverageData));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFileManifestAction.java b/src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFileManifestAction.java
index f66a2ee67e..e5ab219cc5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFileManifestAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/InstrumentedFileManifestAction.java
@@ -24,10 +24,12 @@ import com.google.devtools.build.lib.actions.ActionOwner;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Executor;
import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.analysis.Util;
import com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.util.RegexFilter;
+import com.google.devtools.build.lib.vfs.FileSystemUtils;
import java.io.IOException;
import java.io.OutputStream;
@@ -108,9 +110,12 @@ class InstrumentedFileManifestAction extends AbstractFileWriteAction {
// Instrumented manifest makes sense only for rules with binary output.
Preconditions.checkState(ruleContext.getRule().hasBinaryOutput());
final Artifact instrumentedFileManifest =
- ruleContext.getPackageRelativeArtifact(
- ruleContext.getTarget().getName() + ".instrumented_files",
- ruleContext.getConfiguration().getBinDirectory());
+ ruleContext.getAnalysisEnvironment().getDerivedArtifact(
+ // Do not use replaceExtension(), as we may get name conflicts (two target-names have the
+ // same base name and only differ by extension).
+ FileSystemUtils.appendExtension(
+ Util.getWorkspaceRelativePath(ruleContext.getTarget()), ".instrumented_files"),
+ ruleContext.getConfiguration().getBinDirectory());
// Instrumented manifest artifact might already exist in case when multiple test
// actions that use slightly different subsets of runfiles set are generated for the same rule.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java
index 958e8b3779..8b239e8f28 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.RunfilesSupport;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
+import com.google.devtools.build.lib.analysis.Util;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
@@ -74,7 +75,7 @@ public final class TestActionBuilder {
local, explicitShardCount, isTestShardingCompliant(),
TestSize.getTestSize(ruleContext.getRule()));
Preconditions.checkState(shards >= 0);
- return createTestAction(shards);
+ return createTestAction(Util.getWorkspaceRelativePath(ruleContext.getLabel()), shards);
}
private boolean isTestShardingCompliant() {
@@ -175,12 +176,12 @@ public final class TestActionBuilder {
* Creates a test action and artifacts for the given rule. The test action will
* use the specified executable and runfiles.
*
+ * @param targetName the relative path of the target to run
* @return ordered list of test artifacts, one per action. These are used to drive
* execution in Skyframe, and by AggregatingTestListener and
* TestResultAnalyzer to keep track of completed and pending test runs.
*/
- private TestParams createTestAction(int shards) {
- PathFragment targetName = new PathFragment(ruleContext.getLabel().getName());
+ private TestParams createTestAction(PathFragment targetName, int shards) {
BuildConfiguration config = ruleContext.getConfiguration();
AnalysisEnvironment env = ruleContext.getAnalysisEnvironment();
Root root = config.getTestLogsDirectory();
@@ -246,22 +247,22 @@ public final class TestActionBuilder {
for (int shard = 0; shard < shardRuns; shard++) {
String suffix = (shardRuns > 1 ? String.format("_shard_%d_of_%d", shard + 1, shards) : "")
+ runSuffix;
- Artifact testLog = ruleContext.getPackageRelativeArtifact(
- targetName.getRelative("test" + suffix + ".log"), root);
- Artifact cacheStatus = ruleContext.getPackageRelativeArtifact(
- targetName.getRelative("test" + suffix + ".cache_status"), root);
+ Artifact testLog = env.getDerivedArtifact(
+ targetName.getChild("test" + suffix + ".log"), root);
+ Artifact cacheStatus = env.getDerivedArtifact(
+ targetName.getChild("test" + suffix + ".cache_status"), root);
Artifact coverageArtifact = null;
if (collectCodeCoverage) {
- coverageArtifact = ruleContext.getPackageRelativeArtifact(
- targetName.getRelative("coverage" + suffix + ".dat"), root);
+ coverageArtifact =
+ env.getDerivedArtifact(targetName.getChild("coverage" + suffix + ".dat"), root);
coverageArtifacts.add(coverageArtifact);
}
Artifact microCoverageArtifact = null;
if (collectCodeCoverage && config.isMicroCoverageEnabled()) {
- microCoverageArtifact = ruleContext.getPackageRelativeArtifact(
- targetName.getRelative("coverage" + suffix + ".micro.dat"), root);
+ microCoverageArtifact =
+ env.getDerivedArtifact(targetName.getChild("coverage" + suffix + ".micro.dat"), root);
}
env.registerAction(new TestRunnerAction(