The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#) https://grpc.io/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.7 KiB

# Copyright 2021 The gRPC Authors
#
# 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.
"""Bazel rule tests of bazel/python_rules.bzl"""
load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts")
def _assert_in(env, item, container):
asserts.true(
env,
item in container,
"Expected " + str(item) + " to be in " + str(container),
)
# Tests the declared outputs of the 'py_proto_library' rule and, indirectly, also tests that
# these outputs are actually generated (building ":helloworld_py_pb2" will fail if not all of
# the declared output files are actually generated).
def _py_proto_library_provider_contents_test_impl(ctx):
env = analysistest.begin(ctx)
target = analysistest.target_under_test(env)
files = [file.short_path for file in target.files.to_list()]
runfiles = [file.short_path for file in target.default_runfiles.files.to_list()]
py_info_transitive_sources = [
file.short_path
for file in target[PyInfo].transitive_sources.to_list()
]
_assert_in(env, "helloworld_pb2.py", files)
_assert_in(env, "helloworld_pb2.pyi", files)
_assert_in(env, "subdir/hello_dep_pb2.py", files)
_assert_in(env, "subdir/hello_dep_pb2.pyi", files)
_assert_in(env, "helloworld_pb2.py", runfiles)
_assert_in(env, "helloworld_pb2.pyi", runfiles)
_assert_in(env, "subdir/hello_dep_pb2.py", runfiles)
_assert_in(env, "subdir/hello_dep_pb2.pyi", runfiles)
_assert_in(env, "helloworld_pb2.py", py_info_transitive_sources)
_assert_in(env, "helloworld_pb2.pyi", py_info_transitive_sources)
_assert_in(env, "subdir/hello_dep_pb2.py", py_info_transitive_sources)
_assert_in(env, "subdir/hello_dep_pb2.pyi", py_info_transitive_sources)
return analysistest.end(env)
_py_proto_library_provider_contents_test = analysistest.make(_py_proto_library_provider_contents_test_impl)
def python_rules_test_suite(name):
_py_proto_library_provider_contents_test(
name = "py_proto_library_provider_contents_test",
target_under_test = ":helloworld_py_pb2",
)
native.test_suite(
name = name,
tests = [
"py_proto_library_provider_contents_test",
],
)