diff options
author | nickreid <nickreid@google.com> | 2023-10-02 17:28:01 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-10-02 17:28:34 -0700 |
commit | 7a8fbedcfd9b4c1121d144329d9bf3e9a3184026 (patch) | |
tree | 0693ec436ea99b7bb217dbf925d3bf4cce0e3a3f | |
parent | bff7949ae8a67c2ec469f2a242b17ce1747bda31 (diff) | |
download | bazelbuild-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.bzl | 6 | ||||
-rw-r--r-- | kotlin/jvm_compile.bzl | 10 | ||||
-rw-r--r-- | tests/analysis/jvm_library_test.bzl | 17 | ||||
-rw-r--r-- | tests/analysis/util.bzl | 3 |
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) |