aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java
diff options
context:
space:
mode:
authorGravatar Janak Ramakrishnan <janakr@google.com>2015-08-25 23:23:15 +0000
committerGravatar Lukacs Berki <lberki@google.com>2015-08-26 07:41:32 +0000
commitd76dfc193b67b96fd34ae33ea7d1a8f3326cf7e3 (patch)
treeed693823e826e1a7b8c8aa975238f70a87f0fb32 /src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java
parentc0486e6b59549d5b07f0083996df431d3caf6dbf (diff)
Allow ErrorTransienceValue to be added back as a dep during change pruning if it isn't newer than the current node.
ErrorTransienceValue has to be treated specially during pruning because normally deps added during pruning remain if the node is actually rebuilt. The whole point of ErrorTransienceValue is that on a re-evaluation, the node may not depend on it anymore. So we have special logic to force a rebuild if the ErrorTransienceValue has changed. If it hasn't, however, it is ok for pruning to add it back as a dep -- we'll end up marking this value clean, since ErrorTransienceValue is always the last dep. -- MOS_MIGRATED_REVID=101522197
Diffstat (limited to 'src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java')
-rw-r--r--src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java b/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java
index db7859b6b1..31df0f9814 100644
--- a/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java
+++ b/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java
@@ -468,6 +468,17 @@ public class MemoizingEvaluatorTest {
}
@Test
+ public void transientPruning() throws Exception {
+ SkyKey leaf = GraphTester.toSkyKey("leaf");
+ tester.getOrCreate("top").setHasTransientError(true).addDependency(leaf);
+ tester.set(leaf, new StringValue("leafy"));
+ tester.evalAndGetError("top");
+ tester.getOrCreate(leaf, /*markAsModified=*/true);
+ tester.invalidate();
+ tester.evalAndGetError("top");
+ }
+
+ @Test
public void simpleDependency() throws Exception {
tester.getOrCreate("ab")
.addDependency("a")