diff options
author | Janak Ramakrishnan <janakr@google.com> | 2015-08-25 23:23:15 +0000 |
---|---|---|
committer | Lukacs Berki <lberki@google.com> | 2015-08-26 07:41:32 +0000 |
commit | d76dfc193b67b96fd34ae33ea7d1a8f3326cf7e3 (patch) | |
tree | ed693823e826e1a7b8c8aa975238f70a87f0fb32 /src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java | |
parent | c0486e6b59549d5b07f0083996df431d3caf6dbf (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.java | 11 |
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") |