diff options
author | Greg <gregestren@users.noreply.github.com> | 2020-03-25 14:05:24 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-25 14:05:24 -0400 |
commit | dfcfe825005ffba4a7c15cd9ddac737d040d2506 (patch) | |
tree | f3b52e3aec8ae5d7a6ea6f6f73786d0a1cb35278 | |
parent | 2d620ba1f8284695181fa092ec4064724ea99a9a (diff) | |
download | bazel-skylib-dfcfe825005ffba4a7c15cd9ddac737d040d2506.tar.gz |
Fix type parsing errors on "always true" conditions. (#239)
Specifically:
selects.config_setting_group(
name = "always_true",
match_any = ["//conditions:default"],
)
and
selects.config_setting_group(
name = "always_true",
match_all = ["//conditions:default"],
)
These should, as expected, always evaluate to True.
Their implementation had a bug that failed the build outright.
-rw-r--r-- | lib/selects.bzl | 4 | ||||
-rw-r--r-- | tests/selects_tests.bzl | 51 |
2 files changed, 53 insertions, 2 deletions
diff --git a/lib/selects.bzl b/lib/selects.bzl index 5a9c029..c511fe5 100644 --- a/lib/selects.bzl +++ b/lib/selects.bzl @@ -234,11 +234,11 @@ def _config_setting_always_true(name, visibility): name_off = name + "_stamp_binary_off_check" native.config_setting( name = name_on, - values = {"stamp": True}, + values = {"stamp": "1"}, ) native.config_setting( name = name_off, - values = {"stamp": False}, + values = {"stamp": "0"}, ) return _config_setting_or_group(name, [":" + name_on, ":" + name_off], visibility) diff --git a/tests/selects_tests.bzl b/tests/selects_tests.bzl index b2bda92..ceefa03 100644 --- a/tests/selects_tests.bzl +++ b/tests/selects_tests.bzl @@ -541,6 +541,54 @@ def _or_config_setting_group_single_setting_fails_test(): ) ################################################### +# always_true_match_all_test +################################################### +always_true_match_all_test = analysistest.make(_expect_matches) + +def _always_true_match_all_test(): + """Tests that "match_all=['//conditions:default']" always matches.""" + selects.config_setting_group( + name = "all_always_match", + match_all = ["//conditions:default"], + ) + boolean_attr_rule( + name = "match_always_true_rule", + myboolean = select( + { + ":all_always_match": True, + }, + ), + ) + always_true_match_all_test( + name = "always_true_match_all_test", + target_under_test = ":match_always_true_rule", + ) + +################################################### +# always_true_match_any_test +################################################### +always_true_match_any_test = analysistest.make(_expect_matches) + +def _always_true_match_any_test(): + """Tests that "match_any=['//conditions:default']" always matches.""" + selects.config_setting_group( + name = "any_always_match", + match_any = ["//conditions:default"], + ) + boolean_attr_rule( + name = "match_any_always_true_rule", + myboolean = select( + { + ":any_always_match": True, + }, + ), + ) + always_true_match_any_test( + name = "always_true_match_any_test", + target_under_test = ":match_any_always_true_rule", + ) + +################################################### # empty_config_setting_group_not_allowed_test ################################################### @@ -587,5 +635,8 @@ def selects_test_suite(): _or_config_setting_group_single_setting_matches_test() _or_config_setting_group_single_setting_fails_test() + _always_true_match_all_test() + _always_true_match_any_test() + # _empty_config_setting_group_not_allowed_test() # _and_and_or_not_allowed_together_test() |