我正在使用IAR EWARM的cspybat使用Unity为我的嵌入式代码运行一些单元测试。我想为构建服务器提供一种简单的方法来确定单元测试是通过还是失败。如果我的单元测试失败,CSPY有没有办法返回非零错误代码?我试过改变main()中的返回值而没有改变。有没有我可以调用的函数来强制返回错误?
我的cspybat批处理文件如下所示:
"C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.4\common\bin\cspybat" -f "C:\Work\Sandbox\ST\stmicroeval\_iar_ewarm_project\settings\Project.UnitTest.general.xcl" --backend -f "C:\Work\Sandbox\ST\stmicroeval\_iar_ewarm_project\settings\Project.UnitTest.driver.xcl"
答案 0 :(得分:1)
不幸的是,没有。
我通过将“exit”替换为打印特定模式的函数以及退出代码来解决这个问题。然后我将对cspybat
的调用包装成一个脚本,1)剥离额外输出的输出,2)退出所需的退出代码。
答案 1 :(得分:0)
到2020年末,他们仍然没有提供执行此操作的机制。
我们通过包含一个包含以下内容的宏文件解决了该问题:
execUserExit()
{
__message "program exited with __exit_value = ", __exit_value:%d ;
}
在代码中有我们自己的退出变量:
extern "C" int __exit_value=0xff;
我们在调用exit()
之前进行了设置(尽管您可以编写自己的exit()
版本)
这使调试器始终打印某些内容,即使程序在启动时崩溃。
然后我们用python包装器进行解析:
pattern = "__exit_value =\s([\-|0-9|a-f|A-F|x]*)"
retvalue = int(re.findall(pattern,process.stdout)[0])