我有一个自定义脚本,如果失败的示例很少,我可以重试失败的示例。
它基于扫描失败的规格列表以提取缺少的规格数量。但是,我发现由于“示例外发生错误”而导致规范甚至没有开始时,我有一个很大的误报。
这是我的脚本的样子
bundle exec rspec [...] --failure-exit-code 0 # I use 0 exit code to check whether specs all passed in one go or not.
failures_count=$(grep -o "failed" rspec_persistence.txt | wc -l)
if [ "$failures_count" -eq "0" ]
then
exit 0
fi
# Last part of the code retries failed specs
问题是,无论是由于规范失败还是“示例外部发生错误”,RSpec错误退出代码均为1
答案 0 :(得分:1)
如果您在这里用Google搜索。我刚刚接受了rspec的公关,因此您可以向rspec命令提供--error-exit-code
,如果示例外部失败(将补充现有的--failure-exit-code
),则将返回r {spec}。 / p>
然后可以检查$的值?看看是否需要重试
答案 1 :(得分:0)
我意识到示例之外的错误意味着所有示例的失败状态均为“未知”,没有错误状态为“通过”
cat rspec_persistence.txt
example_id | status | run_time |
---------------------------------------------------------------------------------------- | ------- | ------------ |
./spec/services/foo_spec.rb[1:1:1] | unknown | |
因此以下代码将起作用
# Avoid passing if no specs were ran (most likely indicate a "errors occured outside of examples")
passed_count=$(grep -o "passed" rspec_persistence.txt | wc -l)
if [ "$passed_count" -eq "0" ]
then
exit 1
fi