如何测试Bazel自定义test规则在预期场景下的执行阶段失败?
Bazel测试执行阶段预期失败的方法缺失问题
我找到了测试预期分析阶段错误的官方文档,但无论怎么搜索,都找不到关于测试预期执行阶段失败的方法。
需求场景
我想要测试示例中的line_length_test规则:当传入包含超长行的文件时,该规则运行后应产生失败结果。
换句话说,我需要一个测试来发现这类错误实现:
def _bad_test_impl(ctx): # 空实现,无论输入什么都不会失败 executable = ctx.actions.declare_file(ctx.label.name + ".sh") ctx.actions.write(output=executable, content="") return [DefaultInfo(executable=executable)] bad_test = rule( implementation=_bad_test_impl, test=True, )
临时粗糙方案
目前我想到的最优方案非常简陋:
BUILD 文件
# 预期失败的测试 bad_test( name = "bad_test_fail_test", tags = ["manual"], ) native.sh_test( name = "bad_test_failure_test", srcs = [":not.sh"], args = ["$(location :bad_test_fail_test)"], data = [":bad_test_fail_test"], )
not.sh 文件
! $*
这显然不是理想方案,毕竟这类功能应该有完善的官方支持。
后续进展
我已自行开发了一个实现,但仍希望官方能提供正式的支持方案。
内容的提问来源于stack exchange,提问作者BCS
相关产品推荐
相关产品推荐

