aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2016-02-09 18:01:37 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-02-10 10:22:38 +0000
commitddb7c2721d461d54fdb9dbf013f1f57fb6c44efd (patch)
tree881170d64034726546b7eb824fb01e047178bbbd /src
parentd2eaca660e8b06dc38f74fdf78501c6e631abe0e (diff)
Fix NPE in TestsInSuiteFunction.
Note that this only affects the new Skyframe-based implementation of the LoadingPhaseRunner, which isn't live yet. -- MOS_MIGRATED_REVID=114230017
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java10
2 files changed, 13 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java
index 3c559de383..4556c762fb 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java
@@ -116,6 +116,9 @@ final class TestsInSuiteFunction implements SkyFunction {
if (TargetUtils.isTestSuiteRule(suite)) {
TestsInSuiteValue value =
(TestsInSuiteValue) env.getValue(TestsInSuiteValue.key(suite, strict));
+ if (value == null) {
+ continue;
+ }
builder.merge(value.getTargets());
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
index f933199b2f..3696a10a66 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
@@ -489,6 +489,16 @@ public class LoadingPhaseRunnerTest {
assertCircularSymlinksDuringTargetParsing("//broken/...");
}
+ @Test
+ public void testSuiteInSuite() throws Exception {
+ tester.addFile("suite/BUILD",
+ "test_suite(name = 'a', tests = [':b'])",
+ "test_suite(name = 'b', tests = [':c'])",
+ "sh_test(name = 'c', srcs = ['test.cc'])");
+ LoadingResult loadingResult = assertNoErrors(tester.load("//suite:a"));
+ assertThat(loadingResult.getTargets()).containsExactlyElementsIn(getTargets("//suite:c"));
+ }
+
private void assertCircularSymlinksDuringTargetParsing(String targetPattern) throws Exception {
try {
tester.load(targetPattern);