"""A golden test to verify attribute default values."""

def _my_rule_impl(ctx):
    _ignore = [ctx]  # @unused
    return []

def _my_aspect_impl(target, ctx):
    _ignore = [target, ctx]  # @unused
    return []

# buildifier: disable=unsorted-dict-items
my_aspect = aspect(
    implementation = _my_aspect_impl,
    doc = "This is my aspect. It does stuff.",
    attr_aspects = ["deps", "attr_aspect"],
    attrs = {
        "_x": attr.label(mandatory = True),
        "y": attr.string(default = "why", doc = "some string"),
        "z": attr.string(mandatory = True),
    },
)

# buildifier: disable=unsorted-dict-items
my_rule = rule(
    implementation = _my_rule_impl,
    doc = "This is my rule. It does stuff.",
    attrs = {
        "a": attr.bool(default = False, doc = "Some bool"),
        "b": attr.int(default = 2, doc = "Some int"),
        "c": attr.int_list(default = [0, 1], doc = "Some int_list"),
        "d": attr.label(default = "//foo:bar", doc = "Some label"),
        "e": attr.label_keyed_string_dict(
            default = {"//foo:bar": "hello", "//bar:baz": "goodbye"},
            doc = "Some label_keyed_string_dict",
        ),
        "f": attr.label_list(default = ["//foo:bar", "//bar:baz"], doc = "Some label_list"),
        "g": attr.string(default = "", doc = "Some string"),
        "h": attr.string_dict(
            default = {"animal": "bunny", "color": "orange"},
            doc = "Some string_dict",
        ),
        "i": attr.string_list(default = ["cat", "dog"], doc = "Some string_list"),
        "j": attr.string_list_dict(
            default = {"animal": ["cat", "bunny"], "color": ["blue", "orange"]},
            doc = "Some string_list_dict",
        ),
        "k": attr.bool(mandatory = True, doc = "Some bool"),
        "l": attr.int(mandatory = True, doc = "Some int"),
        "m": attr.int_list(mandatory = True, doc = "Some int_list"),
        "n": attr.label(mandatory = True, doc = "Some label"),
        "o": attr.label_keyed_string_dict(mandatory = True, doc = "Some label_keyed_string_dict"),
        "p": attr.label_list(mandatory = True, doc = "Some label_list"),
        "q": attr.string(mandatory = True, doc = "Some string"),
        "r": attr.string_dict(mandatory = True, doc = "Some string_dict"),
        "s": attr.string_list(mandatory = True, doc = "Some string_list"),
        "t": attr.string_list_dict(mandatory = True, doc = "Some string_list_dict"),
        "u": attr.string(),
        "v": attr.label(),
        "w": attr.int(),
    },
)
