blob: 6e56c028528a06df56d45f8b80b2b2d992c9a667 [file] [log] [blame]
# 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(),
],
)