aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar mschaller <mschaller@google.com>2017-07-26 20:12:30 +0200
committerGravatar Jakob Buchgraber <buchgr@google.com>2017-07-27 09:05:15 +0200
commit684d120e6c3b32ddc99e115c54cdbff64f6c519f (patch)
tree2d1b6aace7bbe5d045e950c4ea338799a096b9ef
parent403010f45379e0ca6e02c6eb68a79f71fdb18c68 (diff)
Fix bug where we incorrectly skip over subdirectories named 'external'. We're actually just trying to skip over packages named '//external'.
PiperOrigin-RevId: 163230119
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ProcessPackageDirectory.java4
-rwxr-xr-xsrc/test/shell/integration/bazel_query_test.sh13
2 files changed, 15 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ProcessPackageDirectory.java b/src/main/java/com/google/devtools/build/lib/skyframe/ProcessPackageDirectory.java
index 349aec4b15..3b7556b4bd 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ProcessPackageDirectory.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ProcessPackageDirectory.java
@@ -198,11 +198,11 @@ public class ProcessPackageDirectory {
&& PathPackageLocator.DEFAULT_TOP_LEVEL_EXCLUDES.contains(basename)) {
continue;
}
- if (basename.equals(Label.EXTERNAL_PACKAGE_NAME.getPathString())) {
+ PathFragment subdirectory = rootRelativePath.getRelative(basename);
+ if (subdirectory.equals(Label.EXTERNAL_PACKAGE_NAME)) {
// Not a real package.
continue;
}
- PathFragment subdirectory = rootRelativePath.getRelative(basename);
// If this subdirectory is one of the excluded paths, don't recurse into it.
if (excludedPaths.contains(subdirectory)) {
diff --git a/src/test/shell/integration/bazel_query_test.sh b/src/test/shell/integration/bazel_query_test.sh
index 0342370dfd..305f8b9a65 100755
--- a/src/test/shell/integration/bazel_query_test.sh
+++ b/src/test/shell/integration/bazel_query_test.sh
@@ -286,5 +286,18 @@ EOF
done
}
+function test_subdirectory_named_external() {
+ mkdir -p foo/external foo/bar
+ cat > foo/external/BUILD <<EOF
+sh_library(name = 't1')
+EOF
+ cat > foo/bar/BUILD <<EOF
+sh_library(name = 't2')
+EOF
+
+ bazel query foo/... >& $TEST_log || fail "Expected success"
+ expect_log "//foo/external:t1"
+ expect_log "//foo/bar:t2"
+}
run_suite "${PRODUCT_NAME} query tests"