diff options
author | Han-Wen Nienhuys <hanwen@google.com> | 2015-07-30 12:24:34 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2015-07-30 15:43:07 +0000 |
commit | 6798135c65b16a962b75e9ee1aea9de8ba694e8f (patch) | |
tree | fa60ba4df1192264eceb3e6a1c192ffd65b334c9 /src/main/java/com/google/devtools/build/lib | |
parent | e449d50a64f400584abe9439de1a06a6f82de5c1 (diff) |
Rollback of commit 6c7ef224d700c25f14581f2a290fbc01d5232011.
*** Reason for rollback ***
Various targets in nightly broken.
--
MOS_MIGRATED_REVID=99466859
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
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( |