Repository navigation
utest: keep testcase failures across units - #11601
Conversation
📌 Code Review Assignment🏷️ Tag: componentsReviewers: @Maihuanyi Changed Files (Click to expand)
🏷️ Tag: kernelReviewers: @GorrayLi @ReviewSun @hamburger-os @lianux-mm @wdfk-prog @xu18838022837 Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2026-07-23 14:48 CST)
📝 Review Instructions
|
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
|
7f14941 to
cce6687
Compare
| #define UTEST_EXTERNAL_URL "www.baidu.com" /* Valid external URL */ | ||
| #define UTEST_EXTERNAL_WRONG_URL "www.abcsdd.com" /* Non-existent URL */ | ||
| #define UTEST_INTRANET_WRONG_IP_ADDR "192.256.0.321" /* Invalid IP format */ | ||
| #define UTEST_EXTERNAL_IP_ADDR "114.114.114.114" /* Valid external IP */ |
There was a problem hiding this comment.
这块为啥要改成114呀?8.8.8.8 是 Google 提供的一个免费、全球通用的公共 DNS(域名系统)服务器地址
cce6687 to
8a6b8a6
Compare
|
在 qemu-vexpress-a9 上用一个最小用例跑了两组对照,结论:这个修复有效,且不会把正常用例误判为失败。 复现用例两个文件,各十几行( /* tc_unit_counter.c —— 第一个 unit 故意失败,第二个通过 */
static void unit_fail(void) { uassert_true(0); }
static void unit_pass(void) { uassert_true(1); }
static void tc_unit_counter(void)
{
UTEST_UNIT_RUN(unit_fail);
UTEST_UNIT_RUN(unit_pass);
}
UTEST_TC_EXPORT(tc_unit_counter, "demo.unit_counter", RT_NULL, RT_NULL, 10);/* tc_unit_allpass.c —— 三个 unit 全通过,用于检查是否出现假红 */
static void tc_unit_allpass(void)
{
UTEST_UNIT_RUN(unit_pass);
UTEST_UNIT_RUN(unit_pass);
UTEST_UNIT_RUN(unit_pass);
}
UTEST_TC_EXPORT(tc_unit_allpass, "demo.unit_allpass", RT_NULL, RT_NULL, 10);环境
baseline(未修改的 utest.c)断言报错已经打印出来了, 本 PR head(08b669ad8)失败不再被后续 unit 覆盖;对照组 两点附注
|
拉取/合并请求描述(PR description)
[
为什么提交这份PR (why to submit this PR)
修复 utest testcase 汇总误判问题:当一个 testcase 内部包含多个
UTEST_UNIT_RUN时,某个 unit 失败后,如果后续 unit 通过,会因为utest_unit_run()重置local_utest.failed_num,导致 testcase 和最终汇总仍显示通过。你的解决方案是什么 (what is your solution)
在 testcase 开始执行前清零统计;每个 unit 仍保持独立统计,unit 执行结束后将本 unit 的 pass/fail 数累加回 testcase 总计。这样可以保留 unit 级隔离,同时保证 testcase 级失败不会被后续 unit 覆盖。
请提供验证的bsp和config (provide the config and bsp)
BSP: bsp/qemu-vexpress-a9
.config: CONFIG_RT_USING_UTEST=y,CONFIG_RT_USING_UTESTCASES=y
action: 本地环境缺少可用交叉编译工具链,未触发 action;已执行
git diff --check]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I have considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up