Do pass default values of ktlint options.
diff --git a/src/main/starlark/core/options/BUILD.bazel b/src/main/starlark/core/options/BUILD.bazel index af63625..cfc1e24 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 @@ "@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 b111ab6..10b74d1 100644 --- a/src/main/starlark/core/options/convert.bzl +++ b/src/main/starlark/core/options/convert.bzl
@@ -10,11 +10,13 @@ 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 6002d37..7a944f1 100644 --- a/src/main/starlark/core/options/opts.kotlinc.bzl +++ b/src/main/starlark/core/options/opts.kotlinc.bzl
@@ -331,4 +331,4 @@ 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 0000000..5da3a6c --- /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, + ), + }, +)