blob: eb41d7b534de5fa8748beebc9bb5117c4e9377c3 [file]
load("@rules_testing//lib:analysis_test.bzl", "analysis_test")
load("@rules_testing//lib:util.bzl", "util")
def _prepend(rule, name, **kwargs):
util.helper_target(
rule,
name = name,
**kwargs
)
return ":" + name
Want = provider(
fields = {
"attr": "attr type of the value.",
"value": "attr value",
},
)
def _claim(name, what, got, wants):
analysis_test(
name = name,
impl = what,
target = got,
attr_values = {
name: want.value
for (name, want) in wants.items()
},
attrs = {
name: want.attr
for (name, want) in wants.items()
},
)
def case(namespace):
return struct(
name = namespace,
have = lambda rule, name, **kwargs: _prepend(rule, namespace + "_" + name, **kwargs),
artifact = lambda name, **kwargs: util.empty_file(
name = namespace + "_" + name,
**kwargs
),
got = lambda rule, name, **kwargs: _prepend(rule, namespace + "_" + name, **kwargs),
ref = lambda name: ":" + namespace + "_" + name,
claim = lambda **kwargs: _claim(name = namespace, **kwargs),
)
def suite(name, **tests):
test_targets = []
for test_name, test in tests.items():
test(case(test_name))
native.test_suite(
name = name,
tests = test_targets,
)