diff options
author | jcater <jcater@google.com> | 2017-12-05 17:48:11 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2017-12-05 17:50:21 -0800 |
commit | a2d2615362c65be98629b39ce39754a325ed1c42 (patch) | |
tree | 34ee3120287d244f57ce6bda51609ed51fb11e76 | |
parent | 21fdc48b07682314a5cee5d4625425f627255c0e (diff) |
Check for null build file returned from getBuildFileForPackage.
This can occur in genqueries when a referenced package isn't in the scope.
PiperOrigin-RevId: 178038701
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java | 15 | ||||
-rwxr-xr-x | src/test/shell/integration/bazel_query_test.sh | 24 |
2 files changed, 33 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java index 5445d40fc3..3e4135b8f3 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java @@ -416,18 +416,21 @@ public class BlazeQueryEnvironment extends AbstractBlazeQueryEnvironment<Target> Path buildFileForSubinclude = packageProvider.getBuildFileForPackage( subincludeTarget.getLabel().getLabel().getPackageIdentifier()); - Label buildFileLabel = - Label.createUnvalidated( - subincludeTarget.getLabel().getLabel().getPackageIdentifier(), - buildFileForSubinclude.getBaseName()); - addIfUniqueLabel( - getNode(new FakeLoadTarget(buildFileLabel, pkg)), seenLabels, dependentFiles); + if (buildFileForSubinclude != null) { + Label buildFileLabel = + Label.createUnvalidated( + subincludeTarget.getLabel().getLabel().getPackageIdentifier(), + buildFileForSubinclude.getBaseName()); + addIfUniqueLabel( + getNode(new FakeLoadTarget(buildFileLabel, pkg)), seenLabels, dependentFiles); + } } } } } return dependentFiles; } + @Override protected void preloadOrThrow(QueryExpression caller, Collection<String> patterns) throws TargetParsingException, InterruptedException { diff --git a/src/test/shell/integration/bazel_query_test.sh b/src/test/shell/integration/bazel_query_test.sh index f5de27c8e5..76ff0e8019 100755 --- a/src/test/shell/integration/bazel_query_test.sh +++ b/src/test/shell/integration/bazel_query_test.sh @@ -457,6 +457,30 @@ EOF expect_not_log "//foo:BUILD$" } +function test_buildfile_in_genquery() { + mkdir -p papaya + cat > papaya/BUILD <<EOF +exports_files(['papaya.bzl']) +EOF + cat > papaya/papaya.bzl <<EOF +foo = 1 +EOF + mkdir -p honeydew + cat > honeydew/BUILD <<EOF +load('//papaya:papaya.bzl', 'foo') +sh_library(name='honeydew', deps=[':pineapple']) +sh_library(name='pineapple') +genquery(name='q', + scope=[':honeydew'], + strict=0, + expression='buildfiles(//honeydew:all)') +EOF + + bazel build //honeydew:q >& $TEST_log || fail "Expected success" + cat bazel-bin/honeydew/q > $TEST_log + expect_log_once "^//honeydew:BUILD$" +} + function tear_down() { bazel shutdown } |