赶上 RSpec "error occured outside of example"
Catch RSpec "error occured outside of example"
我有一个自定义脚本,可以让我在失败示例很少的情况下重试失败示例。
它是基于扫描失败规格列表来提取缺失规格的数量。但是,我刚刚发现由于 "error occured outside of example"
规范甚至没有开始时我有一个很大的误报
这是我的脚本的样子
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,无论这是由于规范失败还是 "errors occured outside of examples"
我意识到示例之外的错误意味着所有示例的失败状态都是 "unknown" 和 none 以及 "passed"
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
以防你google来这里。我刚刚接受了 rspec 的 pr,这样你就可以向 rspec 命令提供一个 --error-exit-code
,如果示例之外出现故障,它将被返回(以补充现有的--failure-exit-code
).
然后您可以检查 $?看看是否需要重试
我有一个自定义脚本,可以让我在失败示例很少的情况下重试失败示例。
它是基于扫描失败规格列表来提取缺失规格的数量。但是,我刚刚发现由于 "error occured outside of example"
规范甚至没有开始时我有一个很大的误报这是我的脚本的样子
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,无论这是由于规范失败还是 "errors occured outside of examples"
我意识到示例之外的错误意味着所有示例的失败状态都是 "unknown" 和 none 以及 "passed"
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
以防你google来这里。我刚刚接受了 rspec 的 pr,这样你就可以向 rspec 命令提供一个 --error-exit-code
,如果示例之外出现故障,它将被返回(以补充现有的--failure-exit-code
).
然后您可以检查 $?看看是否需要重试