已合并
test: add test cases for torch.set_warn_always.The current test cases for torch.set_warn_always fail to cover all essential scenarios and must be completed. #43575
创建于 19 天前
test: add test cases for torch.set_warn_always.The current test cases for torch.set_warn_always fail to cover all essential scenarios and must be completed. #43575
已合并
从已删除 :test_set_warn_always_v2.7.1合入到Ascend/pytorchv2.7.1
Pull Request已成功合入, 合并人@ascend-robot
(感谢 的贡献)atomgit-bot
19 天前 评论:
19 天前 评论:
变更摘要
本 PR 为 torch.set_warn_always 补充缺失的测试用例,新增 test/npu/test_set_warn_always.py 文件,在 TestSetWarnAlways 测试类中覆盖状态切换、重复告警行为、子进程中的单次告警行为以及非法输入等场景;setUp 中保存原始全局状态并通过 addCleanup 注册清理函数,确保每个测试结束后恢复环境。
主要改动
- 状态切换与返回值测试(
test_state_switching_and_return_value): 依次调用torch.set_warn_always(True)与torch.set_warn_always(False),断言返回值均为None,并通过torch.is_warn_always_enabled()确认开关状态正确切换。 - 开启全量告警后的重复告警测试(
test_warn_always_emits_repeated_warnings): 以只读 NumPy 数组调用torch.from_numpy作为稳定触发源,在warnings.catch_warnings下连续触发两次同一TORCH_WARN_ONCE来源,断言两条警告均被记录。 - 关闭全量告警后的单次告警测试(
test_warn_once_behavior_when_disabled): 通过subprocess.run在独立子进程中关闭全量告警后连续触发同一警告来源,以进程返回码断言警告仅被记录一次。 - 非法输入与状态保持测试(
test_invalid_inputs_preserve_state): 覆盖非布尔值(如1、0、None、字符串、对象)、关键字参数、缺少参数及多余参数等非法调用,断言抛出RuntimeError/TypeError异常,且预先开启的告警状态不被破坏。 - 测试环境恢复(
setUp与addCleanup): 测试前保存torch.is_warn_always_enabled()的原始状态,并注册清理函数在每个用例结束后恢复全局状态,避免用例间相互影响。


ascend-robot
19 天前 评论:
19 天前 评论:
atomgit-bot
19 天前 评论:
19 天前 评论:
此处折叠了49条消息 查看更多
ascend-robot
10 天前 评论:
10 天前 评论:
流水线 PR-pipeline_pytorch#59508 [ commitID:cbea4137 ] 已完成
>>>代码风格自动修复执行成功(无修复内容)
| 阶段 | 任务名 | 状态 | 详情 |
|---|---|---|---|
| 编译构建 | Build_X86 | ✅ | >>> |
| Build_ARM | ✅ | >>> | |
| Build_LibTorch_x86 | ✅ | >>> | |
| Build_LibTorch_ARM | ✅ | >>> | |
| Build_X86_torchair | 🛑 | >>> | |
| Build_ARM_torchair | 🛑 | >>> | |
| patch_test | 🛑 | >>> | |
| 恶意代码检查 | Antipoison | ✅ | >>> |
| 编码安全与规范检查 | codecheck_pre-commit | ✅ | >>> |
| check_error | ✅ | >>> | |
| lintrunner | ✅ | >>> | |
| 开源片段检查 | SCA | ✅ | >>> |
| 开发者测试 | UT_ARM_A3_Part_01 | ✅ | >>> |
| UT_ARM_A3_Part_02 | ✅ | >>> | |
| UT_ARM_A2_Part_01 | ✅ | >>> | |
| UT_ARM_A2_Part_02 | ✅ | >>> | |
| UT_ARM_A2_Part_03 | ✅ | >>> | |
| UT_inductor_Part_01 | 🛑 | >>> | |
| UT_inductor_Part_02 | 🛑 | >>> | |
| UT_inductor_Part_03 | 🛑 | >>> | |
| UT_inductor_Part_04 | 🛑 | >>> | |
| UT_DIST_ARM_Part_01 | 🛑 | >>> | |
| UT_DIST_ARM_Part_02 | 🛑 | >>> | |
| UT_DIST_ARM_Part_03 | 🛑 | >>> | |
| UT_DIST_ARM_Part_04 | 🛑 | >>> | |
| UT_ARM_A2_Select_Part_01 | ✅ | >>> | |
| UT_ARM_A2_Select_Part_02 | ✅ | >>> | |
| 流水线 | PR-pipeline_pytorch | ✅ | >>> |
- compile、compile_inductor、compile_torchair : 运行流水线
- retry : 重试流水线所有失败子任务
- retry <任务名> : 仅重试指定失败子任务
- stop : 停止流水线


Jingwei Huang
10 天前 评论:
10 天前 评论:
/lgtm


10 天前 添加了label:lgtm
10 天前 合入了pull request
ascend-robot
10 天前 评论:
10 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#13886 [ commitID:cbea4137 ] 运行失败


【合入来源】
issue分析报告:https://gitcode.com/Ascend/pytorch/issues/3619
【修改方案】
1. 新增测试用例
新增
test/npu/test_set_warn_always.py,在TestSetWarnAlways中提供 4 个测试方法:test_state_switching_and_return_valueNone,并通过查询接口确认状态。test_warn_always_emits_repeated_warningsTORCH_WARN_ONCE来源,确认两次警告均被记录。test_warn_once_behavior_when_disabledtest_invalid_inputs_preserve_statesetUp保存原始全局状态并注册清理函数,保证每个测试结束后恢复环境。重复告警场景使用只读 NumPy 数组转换作为稳定的TORCH_WARN_ONCE来源;该触发源不依赖 NPU 计算,符合目标 API 本身设备无关的语义。测试内容: 测试直接调用
torch.set_warn_always,覆盖布尔状态切换、None返回值、查询接口一致性、开启时重复发出警告、关闭时单次告警,以及非法调用不改变既有状态。测试文件在 torch-npu 环境中验证公共 C10 告警控制路径未受 NPU 扩展影响。新增原因及必要性: 现有社区测试只在 Autograd 用例中通过上下文辅助函数间接启用全量告警,缺少对目标 API 独立契约和异常路径的直接覆盖。新增测试补齐 NPU 环境下的公共告警状态管理与
TORCH_WARN_ONCE行为验证,可防止状态切换、参数校验或警告次数发生回归。【资料变更】
结论:不涉及。
torch.set_warn_always是公开的非计算类 API,现有 NPU 原生 API 资料已记录其原生文档链接、支持状态和设备限制,且未错误声明数据类型支持;完整变更范围仅新增测试文件,不需要更新对外资料。【接口变更】
结论:不涉及。
完整变更范围仅新增
test/npu/test_set_warn_always.py,未修改目标 API 的实现、声明、注册、跨仓依赖或客户可见行为。【功能验证】
master
执行命令:
python test/npu/test_set_warn_always.py -v结果:
v2.7.1
执行命令:
python test/npu/test_set_warn_always.py -v结果:
v2.11.0
执行命令:
python test/npu/test_set_warn_always.py -v结果:
v2.12.0
执行命令:
python test/npu/test_set_warn_always.py -v结果:
【CheckList】