From 8ee60ffa7eb0680c1706c7cb541675c4d94f6a60 Mon Sep 17 00:00:00 2001 From: Googler Date: Mon, 30 Oct 2023 16:20:00 -0700 Subject: [PATCH] Do not resolve source prefixes before checking against java sources PiperOrigin-RevId: 577988802 --- .../blaze/qsync/GraphToProjectConverter.java | 1 - .../qsync/GraphToProjectConverterTest.java | 29 +++++++++++++++++++ .../google/idea/blaze/qsync/testdata/BUILD | 11 +++++++ .../idea/blaze/qsync/testdata/TestData.java | 3 +- .../blaze/qsync/testdata/nestedproto/BUILD | 15 ++++++++++ .../nestedproto/NestedProtoConsumer.java | 26 +++++++++++++++++ .../testdata/nestedproto/proto/nested.proto | 9 ++++++ 7 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto/BUILD create mode 100644 querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto/java/com/testdata/nestedproto/NestedProtoConsumer.java create mode 100644 querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto/java/com/testdata/nestedproto/proto/nested.proto diff --git a/querysync/java/com/google/idea/blaze/qsync/GraphToProjectConverter.java b/querysync/java/com/google/idea/blaze/qsync/GraphToProjectConverter.java index c94e69da3e5..ddb0c374f53 100644 --- a/querysync/java/com/google/idea/blaze/qsync/GraphToProjectConverter.java +++ b/querysync/java/com/google/idea/blaze/qsync/GraphToProjectConverter.java @@ -418,7 +418,6 @@ public ProjectProto.Project createProject(BuildGraphData graph) throws BuildExce } for (Path protoDirPath : rootToProtoSource.get(dir)) { if (rootToPrefix.get(dir).keySet().stream() - .map(protoDirPath::resolve) .noneMatch(protoDirPath::startsWith)) { Path path = dir.resolve(protoDirPath); // TODO(b/305743519): make java source properties like package prefix specific to java diff --git a/querysync/javatests/com/google/idea/blaze/qsync/GraphToProjectConverterTest.java b/querysync/javatests/com/google/idea/blaze/qsync/GraphToProjectConverterTest.java index da2e571c105..f8ca839a253 100644 --- a/querysync/javatests/com/google/idea/blaze/qsync/GraphToProjectConverterTest.java +++ b/querysync/javatests/com/google/idea/blaze/qsync/GraphToProjectConverterTest.java @@ -651,4 +651,33 @@ public void testProtoSourceFolders_whenDirectoryIsExcluded_returnsEmpty() throws ImmutableSet.of(Path.of("myproject/excluded/protos/excluded.proto"))); assertThat(additionalProtoSourceFolders).isEmpty(); } + + @Test + public void testProtoSourceFolders_whenSubfolderOfJavaRoot_notCreated() throws Exception { + + ImmutableMap sourcePackages = + ImmutableMap.of( + TestData.ROOT.resolve( + "nestedproto/java/com/testdata/nestedproto/NestedProtoConsumer.java"), + "com.testdata.nestedproto"); + + GraphToProjectConverter converter = + GraphToProjectConverters.builder() + .setPackageReader(sourcePackages::get) + .setProjectIncludes(ImmutableSet.of(TestData.ROOT.resolve("nestedproto"))) + .setLanguageClasses(ImmutableSet.of(LanguageClass.JAVA)) + .build(); + BuildGraphData buildGraphData = BuildGraphs.forTestProject(TestData.NESTED_PROTO_QUERY); + + ProjectProto.Project projectProto = converter.createProject(buildGraphData); + assertThat(projectProto.getModulesCount()).isEqualTo(1); + ProjectProto.Module workspaceModule = projectProto.getModules(0); + + ProjectProto.ContentEntry contentEntry = workspaceModule.getContentEntries(0); + assertThat(contentEntry.getSourcesList()) + .containsExactly( + ProjectProto.SourceFolder.newBuilder() + .setPath(TestData.ROOT.resolve("nestedproto/java").toString()) + .build()); + } } diff --git a/querysync/javatests/com/google/idea/blaze/qsync/testdata/BUILD b/querysync/javatests/com/google/idea/blaze/qsync/testdata/BUILD index 49609e463be..5bca7191f9b 100644 --- a/querysync/javatests/com/google/idea/blaze/qsync/testdata/BUILD +++ b/querysync/javatests/com/google/idea/blaze/qsync/testdata/BUILD @@ -154,6 +154,16 @@ genquery( ], ) +genquery( + name = "nested_proto_query", + expression = "//querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto:*", + opts = ["--output=streamed_proto"], + scope = scopeForJavaPackage("//querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto:consumer") + [ + "//querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto:nested_proto", + "//querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto:nested_java_proto_lite", + ], +) + java_library( name = "testdata", srcs = ["TestData.java"], @@ -173,6 +183,7 @@ java_library( ":java_library_proto_dep_query", ":java_library_transitive_dep_query", ":java_library_transitive_internal_dep_query", + ":nested_proto_query", ":proto_only_query", ], deps = [ diff --git a/querysync/javatests/com/google/idea/blaze/qsync/testdata/TestData.java b/querysync/javatests/com/google/idea/blaze/qsync/testdata/TestData.java index 308feceb85a..764e94d45eb 100644 --- a/querysync/javatests/com/google/idea/blaze/qsync/testdata/TestData.java +++ b/querysync/javatests/com/google/idea/blaze/qsync/testdata/TestData.java @@ -43,7 +43,8 @@ public enum TestData { FILEGROUP_QUERY("filegroup"), CC_LIBRARY_QUERY("cc"), CC_MULTISRC_QUERY("cc_multisrc"), - PROTO_ONLY_QUERY("protoonly"); + PROTO_ONLY_QUERY("protoonly"), + NESTED_PROTO_QUERY("nestedproto"); public final ImmutableList srcPaths; diff --git a/querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto/BUILD b/querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto/BUILD new file mode 100644 index 00000000000..2d1ae48f629 --- /dev/null +++ b/querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto/BUILD @@ -0,0 +1,15 @@ +proto_library( + name = "nested_proto", + srcs = ["java/com/testdata/nestedproto/proto/nested.proto"], +) + +java_lite_proto_library( + name = "nested_java_proto_lite", + deps = [":nested_proto"], +) + +java_library( + name = "consumer", + srcs = ["java/com/testdata/nestedproto/NestedProtoConsumer.java"], + deps = [":nested_java_proto_lite"], +) diff --git a/querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto/java/com/testdata/nestedproto/NestedProtoConsumer.java b/querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto/java/com/testdata/nestedproto/NestedProtoConsumer.java new file mode 100644 index 00000000000..842ef6effe1 --- /dev/null +++ b/querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto/java/com/testdata/nestedproto/NestedProtoConsumer.java @@ -0,0 +1,26 @@ +/* + * Copyright 2023 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.testdata.nestedproto; + +import com.google.idea.blaze.qsync.testdata.nestedproto.proto.Nested.NestedProtoTest; + +public class NestedProtoConsumer { + private NestedProtoConsumer() {} + + public static String getMessage(NestedProtoTest testProto) { + return testProto.getMessage(); + } +} diff --git a/querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto/java/com/testdata/nestedproto/proto/nested.proto b/querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto/java/com/testdata/nestedproto/proto/nested.proto new file mode 100644 index 00000000000..72b6a74c954 --- /dev/null +++ b/querysync/javatests/com/google/idea/blaze/qsync/testdata/nestedproto/java/com/testdata/nestedproto/proto/nested.proto @@ -0,0 +1,9 @@ +syntax = "proto3"; + +package buildgraph; + +option java_package = "com.google.idea.blaze.qsync.testdata.nestedproto.proto"; + +message NestedProtoTest { + optional string message = 1; +}