aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunctionTest.java
diff options
context:
space:
mode:
authorGravatar Janak Ramakrishnan <janakr@google.com>2016-01-07 17:14:59 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-01-07 20:20:08 +0000
commitf1e257da1467760e7d2f4b3b1f651484f4fe7b67 (patch)
tree78b4f892d5e45a7e37cae5ac86392883c974ba26 /src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunctionTest.java
parent5b5f22aca935fbfdefbcee57004fec5cedb81751 (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.java30
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();