diff options
author | 2016-01-07 17:14:59 +0000 | |
---|---|---|
committer | 2016-01-07 20:20:08 +0000 | |
commit | f1e257da1467760e7d2f4b3b1f651484f4fe7b67 (patch) | |
tree | 78b4f892d5e45a7e37cae5ac86392883c974ba26 /src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunctionTest.java | |
parent | 5b5f22aca935fbfdefbcee57004fec5cedb81751 (diff) |
Split PrepareDepsOfTargetsUnderDirectory into two parts, one which does the directory traversal and package loading, and the other which requests deps on all the transitive targets. We need values from the first half, but the second half can fail to evaluate because of a target cycle. By splitting them, we ensure that there will be values in the graph, so we can get the targets below a directory even if there are cycles present.
--
MOS_MIGRATED_REVID=111609889
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunctionTest.java')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunctionTest.java | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunctionTest.java index 1b7bcb2a74..5c7bfc36f2 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunctionTest.java @@ -55,6 +55,13 @@ public class PrepareDepsOfTargetsUnderDirectoryFunctionTest extends BuildViewTes skyframeExecutor = getSkyframeExecutor(); } + private SkyKey createCollectPackagesKey( + Path root, PathFragment rootRelativePath, ImmutableSet<PathFragment> excludedPaths) { + RootedPath rootedPath = RootedPath.toRootedPath(root, rootRelativePath); + return CollectPackagesUnderDirectoryValue.key( + PackageIdentifier.DEFAULT_REPOSITORY_NAME, rootedPath, excludedPaths); + } + private SkyKey createPrepDepsKey(Path root, PathFragment rootRelativePath) { return createPrepDepsKey(root, rootRelativePath, ImmutableSet.<PathFragment>of()); } @@ -156,7 +163,15 @@ public class PrepareDepsOfTargetsUnderDirectoryFunctionTest extends BuildViewTes ImmutableSet.of(excludedPathFragment)); EvaluationResult<PrepareDepsOfTargetsUnderDirectoryValue> evaluationResult = getEvaluationResult(key); - PrepareDepsOfTargetsUnderDirectoryValue value = evaluationResult.get(key); + CollectPackagesUnderDirectoryValue value = + (CollectPackagesUnderDirectoryValue) + evaluationResult + .getWalkableGraph() + .getValue( + createCollectPackagesKey( + rootDirectory, + new PathFragment("a"), + ImmutableSet.of(excludedPathFragment))); // Then the value reports that "a" is a package, assertThat(value.isDirectoryPackage()).isTrue(); @@ -193,7 +208,12 @@ public class PrepareDepsOfTargetsUnderDirectoryFunctionTest extends BuildViewTes SkyKey key = createPrepDepsKey(rootDirectory, new PathFragment("a"), excludedPaths); EvaluationResult<PrepareDepsOfTargetsUnderDirectoryValue> evaluationResult = getEvaluationResult(key); - PrepareDepsOfTargetsUnderDirectoryValue value = evaluationResult.get(key); + CollectPackagesUnderDirectoryValue value = + (CollectPackagesUnderDirectoryValue) + evaluationResult + .getWalkableGraph() + .getValue( + createCollectPackagesKey(rootDirectory, new PathFragment("a"), excludedPaths)); // Then the value reports that "a" is a package, assertThat(value.isDirectoryPackage()).isTrue(); @@ -209,10 +229,10 @@ public class PrepareDepsOfTargetsUnderDirectoryFunctionTest extends BuildViewTes // Also, the computation graph contains a cached value for "a/b" with "a/b/c" excluded, because // "a/b/c" does live underneath "a/b". WalkableGraph graph = Preconditions.checkNotNull(evaluationResult.getWalkableGraph()); - SkyKey abKey = createPrepDepsKey(rootDirectory, new PathFragment("a/b"), excludedPaths); + SkyKey abKey = createCollectPackagesKey(rootDirectory, new PathFragment("a/b"), excludedPaths); assertThat(graph.exists(abKey)).isTrue(); - PrepareDepsOfTargetsUnderDirectoryValue abValue = - (PrepareDepsOfTargetsUnderDirectoryValue) Preconditions.checkNotNull(graph.getValue(abKey)); + CollectPackagesUnderDirectoryValue abValue = + (CollectPackagesUnderDirectoryValue) Preconditions.checkNotNull(graph.getValue(abKey)); // And that value says that "a/b" is not a package, assertThat(abValue.isDirectoryPackage()).isFalse(); |