diff options
author | janakr <janakr@google.com> | 2018-02-26 15:54:57 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-26 15:57:11 -0800 |
commit | 0175ce3630f15262172731e00e8413c534ed6a62 (patch) | |
tree | 3adaa426206428f314dba5a0a4721f032ec1abc4 /src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java | |
parent | 8cfc6cd2f1165e52b28a858b849463998c0aa73d (diff) |
Fail gracefully on conflicting actions generated by an aspect. These can come from Skylark, so we shouldn't crash. As a safety measure, subclasses of ActionLookupValue are now responsible for detecting action conflicts themselves.
PiperOrigin-RevId: 187095271
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java index 278f1d01af..d2aca56fe9 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java @@ -38,10 +38,12 @@ import com.google.devtools.build.lib.actions.ActionLogBufferPathGenerator; import com.google.devtools.build.lib.actions.ActionLookupData; import com.google.devtools.build.lib.actions.ActionLookupValue; import com.google.devtools.build.lib.actions.ActionResult; +import com.google.devtools.build.lib.actions.Actions; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; import com.google.devtools.build.lib.actions.BuildFailedException; import com.google.devtools.build.lib.actions.Executor; +import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException; import com.google.devtools.build.lib.actions.ResourceManager; import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.TestExecException; @@ -233,12 +235,15 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase { PrecomputedValue.PATH_PACKAGE_LOCATOR.set(differencer, pkgLocator.get()); return new Builder() { - private void setGeneratingActions() { + private void setGeneratingActions() throws ActionConflictException { if (evaluator.getExistingValue(ACTION_LOOKUP_KEY) == null) { differencer.inject( ImmutableMap.of( ACTION_LOOKUP_KEY, - new ActionLookupValue(actionKeyContext, ImmutableList.copyOf(actions), false))); + new ActionLookupValue( + Actions.filterSharedActionsAndThrowActionConflict( + actionKeyContext, ImmutableList.copyOf(actions)), + false))); } } @@ -274,7 +279,11 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase { keys.add(ArtifactSkyKey.key(artifact, true)); } - setGeneratingActions(); + try { + setGeneratingActions(); + } catch (ActionConflictException e) { + throw new IllegalStateException(e); + } EvaluationResult<SkyValue> result = driver.evaluate(keys, keepGoing, threadCount, reporter); if (result.hasError()) { |