From d2469d07296d3497cb1578c11937070154cef46f Mon Sep 17 00:00:00 2001 From: Shane Loretz Date: Fri, 23 May 2025 00:30:22 +0000 Subject: [PATCH 1/2] Add failing test import public with go_proto_library Signed-off-by: Shane Loretz --- .../go_proto_library_import_public/BUILD.bazel | 15 +++++++++++++++ .../go_proto_library_import_public/dog.proto | 10 ++++++++++ .../new_dir/BUILD.bazel | 15 +++++++++++++++ .../new_dir/dog_collar.proto | 8 ++++++++ .../old_dir/BUILD.bazel | 18 ++++++++++++++++++ .../old_dir/dog_collar.proto | 5 +++++ 6 files changed, 71 insertions(+) create mode 100644 tests/core/go_proto_library_import_public/BUILD.bazel create mode 100644 tests/core/go_proto_library_import_public/dog.proto create mode 100644 tests/core/go_proto_library_import_public/new_dir/BUILD.bazel create mode 100644 tests/core/go_proto_library_import_public/new_dir/dog_collar.proto create mode 100644 tests/core/go_proto_library_import_public/old_dir/BUILD.bazel create mode 100644 tests/core/go_proto_library_import_public/old_dir/dog_collar.proto diff --git a/tests/core/go_proto_library_import_public/BUILD.bazel b/tests/core/go_proto_library_import_public/BUILD.bazel new file mode 100644 index 0000000000..0eb876b093 --- /dev/null +++ b/tests/core/go_proto_library_import_public/BUILD.bazel @@ -0,0 +1,15 @@ +load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library") +load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") + +proto_library( + name = "dog_proto", + srcs = ["dog.proto"], + deps = ["//tests/core/go_proto_library_import_public/old_dir:dog_collar_proto"], +) + +go_proto_library( + name = "dog_go_proto", + importpath = "github.com/bazelbuild/rules_go/tests/core/go_proto_library_import_public/dog_go_proto", + proto = ":dog_proto", + deps = ["//tests/core/go_proto_library_import_public/old_dir:dog_collar_go_proto"], +) diff --git a/tests/core/go_proto_library_import_public/dog.proto b/tests/core/go_proto_library_import_public/dog.proto new file mode 100644 index 0000000000..fed67dda16 --- /dev/null +++ b/tests/core/go_proto_library_import_public/dog.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +package foo.bar; + +import "tests/core/go_proto_library_import_public/old_dir/dog_collar.proto"; + +message Dog { + string name = 1; + DogCollar collar = 2; +} diff --git a/tests/core/go_proto_library_import_public/new_dir/BUILD.bazel b/tests/core/go_proto_library_import_public/new_dir/BUILD.bazel new file mode 100644 index 0000000000..fbc567d558 --- /dev/null +++ b/tests/core/go_proto_library_import_public/new_dir/BUILD.bazel @@ -0,0 +1,15 @@ +load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library") +load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") + +proto_library( + name = "dog_collar_proto", + srcs = ["dog_collar.proto"], + visibility = ["//visibility:public"], +) + +go_proto_library( + name = "dog_collar_go_proto", + importpath = "github.com/bazelbuild/rules_go/tests/core/go_proto_library_import_public/new_dir/dog_collar_go_proto", + proto = ":dog_collar_proto", + visibility = ["//visibility:public"], +) diff --git a/tests/core/go_proto_library_import_public/new_dir/dog_collar.proto b/tests/core/go_proto_library_import_public/new_dir/dog_collar.proto new file mode 100644 index 0000000000..f0c1ada95d --- /dev/null +++ b/tests/core/go_proto_library_import_public/new_dir/dog_collar.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; + +package foo.bar; + +message DogCollar { + string name = 1; + string phone_number = 2; +} diff --git a/tests/core/go_proto_library_import_public/old_dir/BUILD.bazel b/tests/core/go_proto_library_import_public/old_dir/BUILD.bazel new file mode 100644 index 0000000000..bbf6c8edb4 --- /dev/null +++ b/tests/core/go_proto_library_import_public/old_dir/BUILD.bazel @@ -0,0 +1,18 @@ +load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library") +load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") + +proto_library( + name = "dog_collar_proto", + srcs = ["dog_collar.proto"], + visibility = ["//visibility:public"], + exports = ["//tests/core/go_proto_library_import_public/new_dir:dog_collar_proto"], + deps = ["//tests/core/go_proto_library_import_public/new_dir:dog_collar_proto"], +) + +go_proto_library( + name = "dog_collar_go_proto", + importpath = "github.com/bazelbuild/rules_go/tests/core/go_proto_library_import_public/old_dir/dog_collar_go_proto", + proto = ":dog_collar_proto", + visibility = ["//visibility:public"], + deps = ["//tests/core/go_proto_library_import_public/new_dir:dog_collar_go_proto"], +) diff --git a/tests/core/go_proto_library_import_public/old_dir/dog_collar.proto b/tests/core/go_proto_library_import_public/old_dir/dog_collar.proto new file mode 100644 index 0000000000..967c6aaadd --- /dev/null +++ b/tests/core/go_proto_library_import_public/old_dir/dog_collar.proto @@ -0,0 +1,5 @@ +syntax = "proto3"; + +package foo.bar; + +import public "tests/core/go_proto_library_import_public/new_dir/dog_collar.proto"; From dec067ab4ed61b362b2483c745ecf19aa17b5914 Mon Sep 17 00:00:00 2001 From: Shane Loretz Date: Fri, 23 May 2025 16:29:18 +0000 Subject: [PATCH 2/2] Add test so protos get built Signed-off-by: Shane Loretz --- .../BUILD.bazel | 9 ++++++ .../import_public_test.go | 29 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 tests/core/go_proto_library_import_public/import_public_test.go diff --git a/tests/core/go_proto_library_import_public/BUILD.bazel b/tests/core/go_proto_library_import_public/BUILD.bazel index 0eb876b093..15c7d9064e 100644 --- a/tests/core/go_proto_library_import_public/BUILD.bazel +++ b/tests/core/go_proto_library_import_public/BUILD.bazel @@ -1,4 +1,5 @@ load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library") +load("@io_bazel_rules_go//go:def.bzl", "go_test") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") proto_library( @@ -13,3 +14,11 @@ go_proto_library( proto = ":dog_proto", deps = ["//tests/core/go_proto_library_import_public/old_dir:dog_collar_go_proto"], ) + +go_test( + name = "import_public_test", + srcs = ["import_public_test.go"], + deps = [ + ":dog_go_proto", + ], +) diff --git a/tests/core/go_proto_library_import_public/import_public_test.go b/tests/core/go_proto_library_import_public/import_public_test.go new file mode 100644 index 0000000000..aace7cb2fd --- /dev/null +++ b/tests/core/go_proto_library_import_public/import_public_test.go @@ -0,0 +1,29 @@ +/* Copyright 2025 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 import_public_test + +import ( + "testing" + + dog "github.com/bazelbuild/rules_go/tests/core/go_proto_library_import_public/dog" +) + +func pet(interface{}) {} + +func TestDog(t *testing.T) { + // just make sure type exists + pet(dog.Dog{Name: "fido"}) +}