add test for incompatible flag
diff --git a/proto/proto_common.bzl b/proto/proto_common.bzl index 26347a8..acc0c86 100644 --- a/proto/proto_common.bzl +++ b/proto/proto_common.bzl
@@ -24,7 +24,7 @@ ProtoLangToolchainInfo = proto_common.ProtoLangToolchainInfo def _incompatible_toolchains_enabled(): - getattr(proto_common, "INCOMPATIBLE_ENABLE_PROTO_TOOLCHAIN_RESOLUTION", False) + return getattr(proto_common, "INCOMPATIBLE_ENABLE_PROTO_TOOLCHAIN_RESOLUTION", False) def _find_toolchain(ctx, legacy_attr, toolchain_type): if _incompatible_toolchains_enabled():
diff --git a/tests/BUILD b/tests/BUILD index 2381713..57bb308 100644 --- a/tests/BUILD +++ b/tests/BUILD
@@ -1,4 +1,18 @@ +load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") load("//proto:defs.bzl", "proto_library") +load("//proto:proto_common.bzl", "proto_common") + +config_setting( + name = "incompatible_enable_proto_toolchain_resolution", + flag_values = { + ":incompatible_enable_proto_toolchain_resolution_flag": "true", + }, +) + +bool_flag( + name = "incompatible_enable_proto_toolchain_resolution_flag", + build_setting_default = getattr(proto_common, "INCOMPATIBLE_ENABLE_PROTO_TOOLCHAIN_RESOLUTION", False), +) proto_library( name = "empty_proto",
diff --git a/tests/proto_common/toolchains.bzl b/tests/proto_common/toolchains.bzl index 3a639af..ad0ae62 100644 --- a/tests/proto_common/toolchains.bzl +++ b/tests/proto_common/toolchains.bzl
@@ -1,21 +1,49 @@ +load("@bazel_skylib//lib:partial.bzl", "partial") load("@bazel_skylib//lib:unittest.bzl", "asserts", "unittest") load("//proto:proto_common.bzl", "toolchains") -def _test_toolchains(ctx): +def _test_toolchains_without_incompatible_flag(ctx): env = unittest.begin(ctx) asserts.equals(env, {}, toolchains.if_legacy_toolchain({})) asserts.equals(env, None, toolchains.if_legacy_toolchain(None)) asserts.equals(env, False, toolchains.if_legacy_toolchain(False)) - asserts.equals(env, False, toolchains.if_legacy_toolchain(False)) return unittest.end(env) -toolchains_test = unittest.make(_test_toolchains) +toolchains_without_incompatible_flags_test = unittest.make(_test_toolchains_without_incompatible_flag) + +def _test_toolchains_with_incompatible_flag(ctx): + env = unittest.begin(ctx) + + asserts.equals(env, {}, toolchains.if_legacy_toolchain({})) + asserts.equals(env, {}, toolchains.if_legacy_toolchain(None)) + asserts.equals(env, {}, toolchains.if_legacy_toolchain(False)) + toolchain = toolchains.use_toolchain("//nonexistent:toolchain_type") + asserts.equals(env, 1, len(toolchain)) + asserts.equals(env, False, toolchain[0].mandatory) + asserts.equals(env, str(Label("//nonexistent:toolchain_type")), str(toolchain[0].toolchain_type)) + + return unittest.end(env) + +toolchains_with_incompatible_flag_test = unittest.make(_test_toolchains_with_incompatible_flag) # buildifier: disable=unnamed-macro def unittest_toolchains(): unittest.suite( "test_toolchains", - toolchains_test + partial.make( + toolchains_without_incompatible_flags_test, + target_compatible_with = select({ + "//tests:incompatible_enable_proto_toolchain_resolution": ["@platforms//:incompatible"], + "//conditions:default": [], + }), + ), + partial.make( + toolchains_with_incompatible_flag_test, + target_compatible_with = select({ + "//tests:incompatible_enable_proto_toolchain_resolution": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + ) )