diff options
author | 2016-02-09 18:01:37 +0000 | |
---|---|---|
committer | 2016-02-10 10:22:38 +0000 | |
commit | ddb7c2721d461d54fdb9dbf013f1f57fb6c44efd (patch) | |
tree | 881170d64034726546b7eb824fb01e047178bbbd /src | |
parent | d2eaca660e8b06dc38f74fdf78501c6e631abe0e (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.java | 3 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java | 10 |
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); |