Как исправить ENOENT в каталоге tmp при запуске тестов в TeamCity? - PullRequest
0 голосов
/ 03 октября 2019

Я настроил TeamCity для запуска тестов для нашей кодовой базы. Время от времени некоторые тесты завершаются с Minitest::UnexpectedError: Errno::ENOENT: No such file or directory @ dir_initialize. Это происходит только в тестах, использующих каталог tmp (кеширование или создание там файлов), и эти тесты не проходят стохастически (90 +% времени, когда они в порядке). Я никогда не сталкивался с этой ошибкой локально.

Я пытался добавить mkdir tmp к этапу сборки консоли, но это просто привело к сбою сборки, поскольку каталог существовал. Интересно, если TeamCity как-то связывается с каталогом в сборках. Мы на Rails 4.2.11.1, Ruby 2.4.6, minitest 5.11.3 и TeamCity 2019.1.1

Я не уверен, как это исправить - есть идеи?

1 Ответ

1 голос
/ 04 октября 2019

Обычно я видел, что /tmp не очищается локально, даже когда сервер Rails перезагружается. Однако работа на CI отличается, так как они обычно выделяют разные машины для каждого запуска CI. Некоторые случаи, когда тесты могут быть неудачными:

  1. Если ваши тесты напрямую зависят от некоторых файлов в `/tmp'.
  2. Если некоторые из ваших тестов зависят от o / p другого тестаслучаи, которые генерируют файлы в /tmp

Помните, что CI может запускать ваш пакет параллельно на нескольких серверах, так что это еще одна вещь, которую стоит рассмотреть. Вот почему случайный запуск тестов считается хорошей практикой.

Надеюсь, это поможет!

...