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

如何修改Makefile测试规则,跑完所有用例后汇总错误码使make返回错误

你可以直接修改Makefile中的tests规则实现需求,修改后的规则如下:

tests: $(TSTE)
	@exit_code=0; \
	for test in $^ ; do \
		chmod +x ./$${test} ; \
		./$${test} || exit_code=1; \
	done; \
	exit $$exit_code

规则说明

你遇到的问题根源是shell的for循环默认只会返回最后一次迭代中最后一条命令的退出状态,哪怕中间有测试用例执行失败,只要最后一条命令执行成功,整个循环的退出码就为0,make就会判定任务执行成功。
上述修改的逻辑为:

  • 循环开始前初始化状态变量exit_code为0,代表无失败的初始状态
  • 每执行一条测试用例时,若用例返回非0错误码,就将exit_code设置为1(只要有任意用例失败,整体状态就标记为失败)
  • 所有测试用例执行完成后,将汇总的exit_code作为整个shell语句的退出码返回,make会直接继承该状态作为自身的最终退出码

该方案既可以保证所有测试用例全部执行完成,又能在存在用例失败时让make返回非0错误码,满足CI/CD流水线的失败识别需求。

内容的提问来源于stack exchange,提问作者Christopher Clark

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:42:01