aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornickreid <nickreid@google.com>2023-10-02 17:28:01 -0700
committerCopybara-Service <copybara-worker@google.com>2023-10-02 17:28:34 -0700
commit7a8fbedcfd9b4c1121d144329d9bf3e9a3184026 (patch)
tree0693ec436ea99b7bb217dbf925d3bf4cce0e3a3f
parentbff7949ae8a67c2ec469f2a242b17ce1747bda31 (diff)
downloadbazelbuild-kotlin-rules-7a8fbedcfd9b4c1121d144329d9bf3e9a3184026.tar.gz
Add kt_jvm_compile(android_lint_config) for specifying the config externally.
PiperOrigin-RevId: 570226758 Change-Id: I09b9dbb8545ef9fb5db84fad6c504bf153996a30
-rw-r--r--kotlin/common.bzl6
-rw-r--r--kotlin/jvm_compile.bzl10
-rw-r--r--tests/analysis/jvm_library_test.bzl17
-rw-r--r--tests/analysis/util.bzl3
4 files changed, 19 insertions, 17 deletions
diff --git a/kotlin/common.bzl b/kotlin/common.bzl
index 3f05488..2279596 100644
--- a/kotlin/common.bzl
+++ b/kotlin/common.bzl
@@ -503,6 +503,8 @@ def _kt_jvm_library(
srcs = [],
common_srcs = [],
coverage_srcs = [],
+ java_android_lint_config = None,
+ force_android_lint = False, # TODO Remove this param
manifest = None, # set for Android libs, otherwise None.
merged_manifest = None, # set for Android libs, otherwise None.
resource_files = [], # set for Android libs, otherwise empty.
@@ -725,7 +727,7 @@ def _kt_jvm_library(
# uses the same lint checks with AndroidLint
disable_lint_checks = disable_lint_checks + kt_codegen_processing_env.get("disabled_lint_checks", [])
- if not is_android_library_without_kt_srcs:
+ if force_android_lint or not is_android_library_without_kt_srcs:
lint_flags = [
"--java-language-level", # b/159950410
kt_toolchain.java_language_version,
@@ -753,7 +755,7 @@ def _kt_jvm_library(
merged_manifest = merged_manifest,
resource_files = resource_files,
baseline_file = androidlint_toolchains.get_baseline(ctx),
- config = kt_toolchain.android_lint_config,
+ config = (None if (kt_srcs or common_srcs) else java_android_lint_config) or kt_toolchain.android_lint_config,
android_lint_rules = plugins.android_lint_rulesets + [
lint_actions.AndroidLintRulesetInfo(singlejars = java_plugin_classpaths_for_java_srcs),
],
diff --git a/kotlin/jvm_compile.bzl b/kotlin/jvm_compile.bzl
index ba3da82..58a2818 100644
--- a/kotlin/jvm_compile.bzl
+++ b/kotlin/jvm_compile.bzl
@@ -14,11 +14,11 @@
"""Compile method that can compile kotlin or java sources"""
+load("//:visibility.bzl", "RULES_DEFS_THAT_COMPILE_KOTLIN")
+load("//bazel:stubs.bzl", "lint_actions")
load(":common.bzl", "common")
load(":compiler_plugin.bzl", "KtCompilerPluginInfo")
load(":traverse_exports.bzl", "kt_traverse_exports")
-load("//:visibility.bzl", "RULES_DEFS_THAT_COMPILE_KOTLIN")
-load("//bazel:stubs.bzl", "lint_actions")
_RULE_FAMILY = common.RULE_FAMILY
@@ -38,6 +38,8 @@ def kt_jvm_compile(
android_lint_plugins,
resource_files,
exported_plugins,
+ java_android_lint_config = None,
+ force_android_lint = False, # TODO Remove this param
manifest = None,
merged_manifest = None,
classpath_resources = [],
@@ -72,6 +74,8 @@ def kt_jvm_compile(
execute as a part of linting.
resource_files: List of Files. The list of Android Resource files.
exported_plugins: List of exported javac/kotlinc plugins
+ java_android_lint_config: Android Lint XML config file to use if there are no Kotlin srcs
+ force_android_lint: Force AndroidLint action
manifest: A File. The raw Android manifest. Optional.
merged_manifest: A File. The merged Android manifest. Optional.
classpath_resources: List of Files. The list of classpath resources (kt_jvm_library only).
@@ -182,6 +186,8 @@ def kt_jvm_compile(
common.collect_providers(KtCompilerPluginInfo, plugins)
),
),
+ java_android_lint_config = java_android_lint_config,
+ force_android_lint = force_android_lint,
resource_files = resource_files,
runtime_deps = [d[JavaInfo] for d in runtime_deps if JavaInfo in d],
srcs = srcs,
diff --git a/tests/analysis/jvm_library_test.bzl b/tests/analysis/jvm_library_test.bzl
index b43ee3e..1627c5f 100644
--- a/tests/analysis/jvm_library_test.bzl
+++ b/tests/analysis/jvm_library_test.bzl
@@ -14,20 +14,22 @@
"""Kotlin kt_jvm_library rule tests."""
+load("//:visibility.bzl", "RULES_KOTLIN")
load("//kotlin:jvm_library.bzl", "kt_jvm_library")
load("//tests/analysis:util.bzl", "ONLY_FOR_ANALYSIS_TEST_TAGS", "create_file", "get_action", "get_arg")
load("@bazel_skylib//lib:sets.bzl", "sets")
load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts")
load(":assert_failure_test.bzl", "assert_failure_test")
-load("//:visibility.bzl", "RULES_KOTLIN")
_DEFAULT_LIST = ["__default__"]
def _test_impl(ctx):
env = analysistest.begin(ctx)
- actions = analysistest.target_actions(env)
actual = ctx.attr.target_under_test
+ actions = analysistest.target_actions(env)
+ kt_al_action = get_action(actions, "KtAndroidLint")
+
asserts.true(
env,
JavaInfo in actual,
@@ -39,17 +41,6 @@ def _test_impl(ctx):
"Expected a ProguardSpecProvider provider.",
)
- if ctx.attr.expected_al_ruleset_names != _DEFAULT_LIST:
- al_action = get_action(actions, "KtAndroidLint")
- asserts.set_equals(
- env,
- sets.make(ctx.attr.expected_al_ruleset_names),
- sets.make([
- a.rsplit("/", 1)[1]
- for a in get_arg(al_action, "--lint_rules", style = "list")
- ]),
- )
-
if ctx.attr.expected_runfile_names != _DEFAULT_LIST:
asserts.set_equals(
env,
diff --git a/tests/analysis/util.bzl b/tests/analysis/util.bzl
index 50bcc0e..653843b 100644
--- a/tests/analysis/util.bzl
+++ b/tests/analysis/util.bzl
@@ -111,6 +111,8 @@ def get_arg(action, arg_name, style = "trim"):
if style == "trim":
return arg[len(arg_name):]
+ elif style == "next":
+ return args[index + 1]
elif style == "list":
result = []
for i in range(index + 1, len(args)):
@@ -118,5 +120,6 @@ def get_arg(action, arg_name, style = "trim"):
break
result.append(args[i])
return result
+
else:
fail("Unrecognized arg style '%s" % style)