From 467aef8faa017e7a4ed7f69eea6fcc8a336c3594 Mon Sep 17 00:00:00 2001 From: Corbin McNeely-Smith <58151731+restingbull@users.noreply.github.com> Date: Mon, 15 May 2023 19:10:14 -0500 Subject: [PATCH] Do pass default values of ktlint options. --- src/main/starlark/core/options/BUILD.bazel | 13 +++++++ src/main/starlark/core/options/convert.bzl | 4 ++- .../starlark/core/options/opts.kotlinc.bzl | 2 +- .../core/options/opts.kotlinc.test.bzl | 34 +++++++++++++++++++ 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 src/main/starlark/core/options/opts.kotlinc.test.bzl diff --git a/src/main/starlark/core/options/BUILD.bazel b/src/main/starlark/core/options/BUILD.bazel index af636259a..cfc1e2494 100644 --- a/src/main/starlark/core/options/BUILD.bazel +++ b/src/main/starlark/core/options/BUILD.bazel @@ -1,10 +1,13 @@ load("//src/main/starlark/release:packager.bzl", "release_archive") load("@bazel_skylib//:bzl_library.bzl", "bzl_library") +load(":opts.kotlinc.test.bzl", "kt_kotlinc_options_test") +load(":opts.kotlinc.bzl", "kt_kotlinc_options") release_archive( name = "pkg", srcs = glob( ["*.bzl"], + exclude = ["*.test.bzl"], ), src_map = { "BUILD.release.bazel": "BUILD.bazel", @@ -19,3 +22,13 @@ bzl_library( "@com_github_jetbrains_kotlin//:capabilities", ], ) + +kt_kotlinc_options( + name = "defaults", +) + +kt_kotlinc_options_test( + name = "do_not_set_defaults", + target_under_test = ":defaults", + want_flags = [], +) diff --git a/src/main/starlark/core/options/convert.bzl b/src/main/starlark/core/options/convert.bzl index b111ab62b..10b74d188 100644 --- a/src/main/starlark/core/options/convert.bzl +++ b/src/main/starlark/core/options/convert.bzl @@ -10,11 +10,13 @@ def _to_flags(opts, attr_provider): list of flags to add to the command line. """ if not attr_provider: - return "" + return [] flags = [] for n, o in opts.items(): value = getattr(attr_provider, n, None) + if value == o.args["default"]: + continue if o.value_to_flag and o.value_to_flag.get(derive.info, None): info = o.value_to_flag[derive.info] flag = info.derive(info.ctx, value) diff --git a/src/main/starlark/core/options/opts.kotlinc.bzl b/src/main/starlark/core/options/opts.kotlinc.bzl index 6002d372e..7a944f11f 100644 --- a/src/main/starlark/core/options/opts.kotlinc.bzl +++ b/src/main/starlark/core/options/opts.kotlinc.bzl @@ -331,4 +331,4 @@ def kotlinc_options_to_flags(kotlinc_options): Returns: list of flags to add to the command line. """ - return convert.javac_options_to_flags(_KOPTS, kotlinc_options) + return convert.kotlinc_options_to_flags(_KOPTS, kotlinc_options) diff --git a/src/main/starlark/core/options/opts.kotlinc.test.bzl b/src/main/starlark/core/options/opts.kotlinc.test.bzl new file mode 100644 index 000000000..5da3a6c5d --- /dev/null +++ b/src/main/starlark/core/options/opts.kotlinc.test.bzl @@ -0,0 +1,34 @@ +load("@bazel_skylib//lib:unittest.bzl", "analysistest", "unittest") +load(":opts.kotlinc.bzl", "KotlincOptions", "kotlinc_options_to_flags") + +def _kt_kotlinc_options_test_impl(ctx): + env = analysistest.begin(ctx) + + target_under_test = analysistest.target_under_test(env) + + want = ctx.attr.want_flags + + got = kotlinc_options_to_flags(target_under_test[KotlincOptions]) + + extra = [f for f in got if f not in want] + missing = [f for f in want if f not in got] + + fails = [] + if extra: + fails.append("not want %s" % extra) + if missing: + fails.append("want %s" % missing) + + if fails: + unittest.fail(env, "\n".join(fails + ["Wanted %s" % want, "Got %s" % got])) + + return analysistest.end(env) + +kt_kotlinc_options_test = analysistest.make( + _kt_kotlinc_options_test_impl, + attrs = { + "want_flags": attr.string_list( + mandatory = True, + ), + }, +)