# 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 kt_jvm_import rule tests.""" load("//kotlin:jvm_import.bzl", "kt_jvm_import") load("//kotlin:jvm_library.bzl", "kt_jvm_library") load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") load("//tests/analysis:util.bzl", "ONLY_FOR_ANALYSIS_TEST_TAGS", "create_file") load(":assert_failure_test.bzl", "assert_failure_test") load("//:visibility.bzl", "RULES_KOTLIN") def _impl(ctx): env = analysistest.begin(ctx) asserts.true( env, JavaInfo in ctx.attr.target_under_test, "kt_jvm_import did not produce JavaInfo provider.", ) asserts.true( env, ProguardSpecProvider in ctx.attr.target_under_test, "kt_jvm_import did not produce ProguardSpecProvider provider.", ) return analysistest.end(env) _test = analysistest.make(_impl) def _test_kt_jvm_import(): test_name = "kt_jvm_import_test" native.java_library( name = "jar1", srcs = [], ) kt_jvm_import( name = test_name + "_tut", jars = [ "libjar1.jar", ], srcjar = "libjar1-src.jar", ) _test( name = test_name, target_under_test = test_name + "_tut", ) return test_name def _test_kt_jvm_import_no_srcjar(): test_name = "kt_jvm_import_no_srcjar_test" native.java_library( name = "jar3", srcs = [], ) kt_jvm_import( name = test_name + "_tut", jars = [ "libjar3.jar", ], ) _test( name = test_name, target_under_test = test_name + "_tut", ) return test_name def _test_kt_jvm_import_with_srcjar_ext(): test_name = "kt_jvm_import_test_with_srcjar_ext" native.java_library( name = "jar2", srcs = [], ) native.genrule( name = "gen_jar2_srcjar", cmd = "touch $@", outs = ["libjar2.srcjar"], ) kt_jvm_import( name = test_name + "_tut", jars = [ "libjar2.jar", ], srcjar = ":libjar2.srcjar", ) _test( name = test_name, target_under_test = test_name + "_tut", ) return test_name def _test_kt_jvm_import_with_runtime_deps(): test_name = "kt_jvm_import_with_runtime_deps" native.java_library( name = test_name + "_dep", srcs = [], ) kt_jvm_import( name = test_name + "_tut", jars = [ "lib%s_dep.jar" % test_name, ], runtime_deps = [ test_name + "_dep", ], ) _test( name = test_name, target_under_test = test_name + "_tut", ) return test_name def _test_kt_jvm_import_with_proguard_specs(): test_name = "kt_jvm_import_with_proguard_specs" native.java_library( name = test_name + "_jar", srcs = [], ) kt_jvm_import( name = test_name + "_tut", jars = [ "lib%s_jar.jar" % test_name, ], proguard_specs = [ create_file( name = test_name + "/salutations.pgcfg", content = """ -keep class * { *** greeting(); } """, ), ], ) _test( name = test_name, target_under_test = test_name + "_tut", ) return test_name def _mock_jar(test_name, i): """Creates a Jar named after the given inputs and returns its name.""" native.java_library( name = "%s_mock%s" % (test_name, i), srcs = [], ) return "lib%s_mock%s.jar" % (test_name, i) def test_suite(name = None): native.test_suite( name = name, tests = [ _test_kt_jvm_import(), _test_kt_jvm_import_with_srcjar_ext(), _test_kt_jvm_import_no_srcjar(), _test_kt_jvm_import_with_runtime_deps(), _test_kt_jvm_import_with_proguard_specs(), ], )