| # Copyright 2022 Google LLC. 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. |
| |
| """Kotlin macro for building and running tests on a JVM.""" |
| |
| load(":jvm_library.bzl", "kt_jvm_library") |
| load("//bazel:stubs.bzl", "register_extension_info") |
| |
| def _lib_name(name): |
| return "%s_DO_NOT_DEPEND_LIB" % name |
| |
| def kt_jvm_test( |
| name, |
| custom_kotlincopts = None, |
| deps = None, |
| disable_lint_checks = None, |
| features = None, |
| javacopts = None, |
| plugins = None, |
| runtime_deps = None, |
| srcs = None, |
| resources = None, |
| tags = None, |
| **kwargs): |
| """Wrapper around kt_jvm_library and java_test to conveniently declare tests written in Kotlin. |
| |
| Use of this rule is discouraged for simple unit tests, which should instead use |
| go/junit_test_suites or other, more efficient ways of compiling and running unit tests. |
| |
| Args: |
| name: Name of the target. |
| custom_kotlincopts: Additional flags to pass to Kotlin compiler defined by kt_compiler_opt. |
| deps: A list of dependencies. |
| disable_lint_checks: A list of AndroidLint checks to be skipped. |
| features: A list of enabled features, see go/be#common.features. |
| javacopts: Additional flags to pass to javac if used. |
| plugins: Java annotation processors to run at compile-time. |
| runtime_deps: A list of runtime dependencies. |
| srcs: A list of sources to compile. |
| tags: A list of string tags passed to generated targets. |
| resources: A list of data files to include in the jar file. |
| **kwargs: Additional parameters to pass on to generated java_test, see go/be-java#java_test. |
| """ |
| if srcs: |
| runtime_deps = [_lib_name(name)] + (runtime_deps or []) |
| |
| kt_jvm_library( |
| name = _lib_name(name), |
| srcs = srcs, |
| resources = resources, |
| deps = deps, |
| plugins = plugins, |
| javacopts = javacopts, |
| custom_kotlincopts = custom_kotlincopts, |
| disable_lint_checks = disable_lint_checks, |
| tags = tags, |
| features = features, |
| testonly = 1, |
| visibility = ["//visibility:private"], |
| ) |
| elif deps: |
| fail("deps specified without sources. Use runtime_deps instead to specify any dependencies needed to run this test.") |
| |
| native.java_test( |
| name = name, |
| runtime_deps = runtime_deps, |
| tags = tags, |
| features = features, |
| **kwargs |
| ) |
| |
| register_extension_info( |
| extension = kt_jvm_test, |
| label_regex_for_dep = "{extension_name}_DO_NOT_DEPEND_LIB", |
| ) |