Поймать RSpec "ошибка произошла за пределами примера" - PullRequest
0 голосов
/ 18 октября 2018

У меня есть собственный скрипт, который позволяет мне повторять неудачные примеры, если есть несколько неудачных примеров.

Он основан на сканировании списка неудачных спецификаций для определения количества отсутствующих спецификаций.Тем не менее, я только что обнаружил, что у меня большой ложный положительный результат, когда спецификации даже не запускались из-за «ошибки, возникшей за пределами примера»

Вот как выглядит мой скрипт

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, независимо от того, вызваны ли они ошибочными спецификациями или «произошли ошибки вне примеров»

1 Ответ

0 голосов
/ 18 октября 2018

Я понял, что ошибка вне примеров означает, что все примеры будут иметь статус ошибки «неизвестно» и ни один с «пройдено»

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
...