// Copyright 2019 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 proto_test import ( "testing" "github.com/bazelbuild/rules_go/go/tools/bazel_testing" ) var testArgs = bazel_testing.Args{ WorkspaceSuffix: ` load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "com_google_protobuf", sha256 = "75be42bd736f4df6d702a0e4e4d30de9ee40eac024c4b845d17ae4cc831fe4ae", strip_prefix = "protobuf-21.7", # latest available in BCR, as of 2022-09-30 urls = [ "https://github.com/protocolbuffers/protobuf/archive/v21.7.tar.gz", "https://mirror.bazel.build/github.com/protocolbuffers/protobuf/archive/v21.7.tar.gz", ], ) load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") protobuf_deps() http_archive( name = "rules_proto", sha256 = "4d421d51f9ecfe9bf96ab23b55c6f2b809cbaf0eea24952683e397decfbd0dd0", strip_prefix = "rules_proto-f6b8d89b90a7956f6782a4a3609b2f0eee3ce965", # master, as of 2020-01-06 urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_proto/archive/f6b8d89b90a7956f6782a4a3609b2f0eee3ce965.tar.gz", "https://github.com/bazelbuild/rules_proto/archive/f6b8d89b90a7956f6782a4a3609b2f0eee3ce965.tar.gz", ], ) `, Main: ` -- BUILD.bazel -- load("@rules_proto//proto:defs.bzl", "proto_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") load("@io_bazel_rules_go//go:def.bzl", "go_binary") proto_library( name = "cross_proto", srcs = ["cross.proto"], ) go_proto_library( name = "cross_go_proto", importpath = "github.com/bazelbuild/rules_go/tests/core/cross", protos = [":cross_proto"], ) go_binary( name = "use_bin", srcs = ["use.go"], deps = [":cross_go_proto"], goos = "linux", goarch = "386", ) go_binary( name = "use_shared", srcs = ["use.go"], deps = [":cross_go_proto"], linkmode = "c-shared", ) -- cross.proto -- syntax = "proto3"; package cross; option go_package = "github.com/bazelbuild/rules_go/tests/core/cross"; message Foo { int64 x = 1; } -- use.go -- package main import _ "github.com/bazelbuild/rules_go/tests/core/cross" func main() {} `, } func TestMain(m *testing.M) { bazel_testing.TestMain(m, testArgs) } func TestCmdLine(t *testing.T) { args := []string{ "build", "--platforms=@io_bazel_rules_go//go/toolchain:linux_386", ":cross_go_proto", } if err := bazel_testing.RunBazel(args...); err != nil { t.Fatal(err) } } func TestTargets(t *testing.T) { for _, target := range []string{"//:use_bin", "//:use_shared"} { if err := bazel_testing.RunBazel("build", target); err != nil { t.Errorf("building target %s: %v", target, err) } } }