You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bazel内置expect_failure属性的正确使用方法咨询

Bazel内置expect_failure属性使用说明

这个属性是Bazel测试规则基类自带的保留内置属性,不允许自定义规则覆盖重定义,本身类型为字符串,不是布尔开关,核心作用是匹配测试执行失败时stderr中预期出现的错误子串,而非简单标记测试是否预期失败。

传入字符串"True"触发报错,是因为Bazel拿到该属性值后会执行两项校验,只要有一项不满足就会抛出Expected failure not found: xxx错误:

  • 测试关联的执行进程必须返回非0退出码(即进程实际执行失败)
  • 进程输出的stderr内容必须包含expect_failure属性填写的完整字符串片段

正确使用方式

  • 不要在自定义规则中重名定义expect_failure属性,如果需要布尔类型的“是否预期失败”标记,换用其他属性名(比如expect_tool_fail、should_fail)避开保留字即可,自定义的布尔属性可以按自身业务逻辑实现校验,不受内置逻辑约束。
  • 使用内置expect_failure时,属性值填写预期测试失败时会抛出的错误信息子串即可,参考示例:
# 示例:校验传非法参数时工具是否抛出指定错误
verilog_test(
    name = "invalid_param_test",
    srcs = ["test_case.sv"],
    args = ["--timeout=-1"],
    # 预期stderr中出现"timeout value must be positive"的错误提示
    expect_failure = "timeout value must be positive",
)
  • 如果只需要“测试运行失败就算通过,不需要匹配具体错误信息”的能力,不要用这个内置属性,通过自定义的布尔属性实现对应逻辑即可,内置属性没有提供“不匹配错误内容、仅判断失败状态”的开关。

内容的提问来源于stack exchange,提问作者Jonathan Mayer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:03:21