build_defs/npm/ava.build_defs
subinclude("//build_defs/npm")
def ava_dir(
name:str,
srcs:list=[],
deps:list=[],
visibility:list=[],
):
return build_rule(
name = name,
srcs = srcs,
cmd = "zip -r " + name + ".ava_dir ./",
outs = [name + ".ava_dir"],
deps = deps,
test_only = True,
visibility = visibility
)
def ava_tests(
name:str,
srcs:list,
nyc:bool=True,
ava_dirs:list=[],
deps:list=[],
visibility:list=[],
vue_components:bool=False,
):
rules = []
for src in srcs:
on_test = ava_test(
name = name + "_" + src[:-8],
src = src,
nyc = nyc,
ava_dirs = ava_dirs,
deps = deps,
visibility = visibility,
vue_component = vue_components,
)
rules += [on_test]
return build_rule(
name = name,
srcs = srcs,
deps = rules,
test_only = True,
visibility = visibility,
requires = ["npm-test"],
)
def ava_test(
name:str,
src:str,
ava_dirs:list=[],
nyc:bool=True,
deps:list=[],
visibility:list=[],
vue_component:bool=False,
):
if vue_component and _assert_boolean(CONFIG.DISABLE_VUE_COMPONENT_TESTS):
return build_rule(
name = name,
data = [src] + ava_dirs + deps,
test_cmd = "echo 'Skipped...'",
test = True,
test_only = True,
no_test_output = True,
visibility = visibility,
)
use_nyc = "nyc --silent " if nyc else ""
test_cmd = _set_node_modules()
for ava_dir in ava_dirs:
ava_dir_name = ava_dir.split(":")
if len(name) < 2:
temp = ava_dir.split("/")
ava_dir_name = temp[len(temp) - 1]
else:
ava_dir_name = ava_dir_name[1]
test_cmd += " && unzip -o " + ava_dir_name + ".ava_dir"
if CONFIG.CORE_FILES != "":
deps += [CONFIG.CORE_FILES]
return build_rule(
name = name,
data = [src] + ava_dirs + deps,
test_cmd = " && ".join([
test_cmd,
" ".join([
"$TOOL " + use_nyc + "ava",
"--",
"--serial",
"--concurrency=1",
"$PKG_DIR/" + src,
"|",
"tee",
">($TOOL tap-xunit > test.results)",
]),
"mkdir -p " + name,
"pnpx nyc report --reporter cobertura",
"mv coverage/cobertura-coverage.xml test.coverage",
"mv .nyc_output " + name + "/.nyc_output",
]),
test_outputs = [name + "/.nyc_output"],
test = True,
test_only = True,
visibility = visibility,
test_tools = [CONFIG.NPX_TOOL],
labels = ['ava'],
requires = ["npm-test"],
)
CONFIG.setdefault("DISABLE_VUE_COMPONENT_TESTS", False)