_default_test_file_exts = ["mlir", "pbtxt", "td"]
_default_size = "small"
_default_tags = []
_ALWAYS_EXCLUDE = [
"**/LICENSE.txt",
"**/README.txt",
"**/lit.local.cfg",
"**/* *",
"**/* */**",
]
def _run_lit_test(name, data, size, tags, features):
native.py_test(
name = name,
srcs = ["@llvm-project//llvm:lit"],
tags = tags,
args = [
"brain/megbrain/src/jit/test/mlir/utils --config-prefix=lit.bzl -v",
] + features,
data = data + [
"//brain/megbrain/src/jit/test/mlir/utils:litfiles",
"//brain/megbrain/tools/mlir:mgb-file-check",
"@llvm-project//llvm:count",
"@llvm-project//llvm:not",
],
size = size,
main = "lit.py",
)
def mlir_lit_test_suite(
name,
exclude = [],
test_file_exts = _default_test_file_exts,
default_size = _default_size,
size_override = {},
data = [],
per_test_extra_data = {},
default_tags = _default_tags,
tags_override = {},
features = []):
exclude = _ALWAYS_EXCLUDE + exclude
test_names = []
tests = native.glob(
["*." + ext for ext in test_file_exts],
exclude = exclude,
)
for i in range(len(tests)):
cur_test = tests[i]
internal_name = cur_test
lit_test(
name = internal_name,
data = data + per_test_extra_data.pop(cur_test, []),
size = size_override.pop(cur_test, default_size),
tags = ["windows_fail"] + default_tags + tags_override.pop(cur_test, []),
features = features,
)
test_names.append(internal_name + ".test")
native.test_suite(
name = name,
tests = test_names,
tags = default_tags,
)
def lit_test(
name,
data = [],
size = _default_size,
tags = _default_tags,
features = []):
_run_lit_test(name + ".test", data + [name], size, tags, features)